32 बिट और 64 अनुप्रयोगों के लिए रजिस्ट्री कुंजियों को अलग किया जाता है, आप कर सकते हैं के तहत मौजूद है अपने 32 बिट एप्लिकेशन से 64 बिट रजिस्ट्री तक पहुंच (सीधे) नहीं है। आपके मामले में आवश्यक बिट हाइव रजिस्ट्री के 32 बिट भाग में मौजूद नहीं है, तो आप केवल मूल फ़ोल्डर तक पहुंच सकते हैं।
MSDN से:
पर 64-बिट Windows, रजिस्ट्री प्रविष्टियाँ के कुछ भागों 32-बिट अनुप्रयोग और 64-बिट अनुप्रयोगों के लिए अलग से संग्रहीत और अलग तार्किक रजिस्ट्री रजिस्ट्री पुनर्निर्देशक और रजिस्ट्री का उपयोग कर विचारों में मैप किया जाता है प्रतिबिंब, क्योंकि किसी अनुप्रयोग का 64-बिट संस्करण 32-बिट संस्करण की तुलना में विभिन्न रजिस्ट्री कुंजियों और मानों का उपयोग कर सकता है। साझा रजिस्ट्री कुंजियां भी हैं जिन्हें पुनर्निर्देशित या प्रतिबिंबित नहीं किया जाता है।
आप एमएसडीएन: Registry Keys Affected by WOW64 पर सूची पढ़ सकते हैं। दुर्भाग्य से SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
का उल्लेख नहीं किया गया है लेकिन यह भी प्रभावित है।
समाधान
आप क्या करना है स्पष्ट रूप से रजिस्ट्री के 64 बिट भाग का उपयोग करने के लिएRegOpenKeyEx
पूछने के लिए है। यह आपके कॉल पर KEY_WOW64_64KEY
ध्वज जोड़कर किया जा सकता है (आप KEY_WOW64_32KEY
का उपयोग कर 64 बिट एप्लिकेशन से 32 बिट रजिस्ट्री तक पहुंच सकते हैं)। कृपया ध्यान दें कि यह ध्वज Windows 2000 पर समर्थित नहीं है, तो यदि आपका एप्लिकेशन उस (पुराने) संस्करण के साथ संगत होना चाहिए जो आपको केस प्रबंधित करना है।
अधिक जानकारी के लिए एमएसडीएन पर यह लिंक देखें: Accessing an Alternate Registry View।
इसे आसान बनाने के लिए, बस से अपने कॉल बदलने के लिए: है कि आप बिना केवल अपने पथ के माध्यम से कुंजी का उपयोग कर सकते
returnStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{26A24AE4-039D-4CA4-87B4-2F86416024FF}"),
0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKey);
नोट
नोट:
returnStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{26A24AE4-039D-4CA4-87B4-2F86416024FF}"),
0, KEY_ALL_ACCESS, &hKey);
को इस HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
का उपयोग कर किसी भी झंडे। क्योंकि Wow6432
नोड वर्चुअलाइज्ड नोड WOW64 द्वारा उपयोग किया जाता है लेकिन आपको इस पर भरोसा नहीं करना चाहिए, यह स्थिर है लेकिन इसे बदलने के अधीन कार्यान्वयन विवरण माना जाना चाहिए।
संदर्भ
- Registry Virtualization MSDN पर।
- पाठकों को इस पोस्ट पर दिलचस्प टिप्स मिलते हैं: http://poshcode.org/2470, यह पावरशेल के लिए है, लेकिन यह बताता है कि 32 बिट एप्लिकेशन से WMI डेटा (64 बिट रजिस्ट्री भाग के सापेक्ष) तक कैसे पहुंचे।
क्या यह 32 बिट एप्लीकेशन है? –