2012-11-09 11 views
5

मैं एक सी # अनुप्रयोग है कि कॉल:मेरा 32-बिट एप्लिकेशन 32-बिट रजिस्ट्री हाइव तक क्यों नहीं पहुंचता है?

Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\MyApp")     

यह 86 लक्षित करने के लिए सेट कर दिया जाता है, और मैं कार्य प्रबंधक से देख सकते हैं, जब मैं इसे चलाने के लिए यह एक 32-बिट प्रक्रिया है। हालांकि कोड की है कि रेखा अजीब HKCU \ SOFTWARE \ Wow6432Node \ MyApp पर 32-बिट छत्ता के बजाय HKCU \ Software \ MyApp पर 64-बिट छत्ता जा रहा है,। कोई विचार?

मैं भी Powershell के दो उदाहरणों, एक 32-बिट और एक 64-बिट शुरू किया, और नीचे भाग गया, लेकिन दोनों भी 64-बिट छत्ता में मान।

get-itemproperty -Path Registry::HKEY_CURRENT_USER\Software\MyApp 

कोई विचार क्या गलत हो सकता है? मैंने तीन बार जांच की है कि 32 और 64 बिट हाइव्स पर रजिस्ट्री सेटिंग्स भी regedit से अलग हैं।

+0

यह हो सकता है कि सीआरएल पता लगाता है कि आप 64 बिट कंप्यूटर्स का उपयोग कर रहे हैं और उस छिद्र को चलाते हैं। बस एक अनुमान हालांकि !! – FrostyFire

उत्तर

4

क्योंकि आप एक कुंजी (HKCU \ सॉफ्टवेयर) है कि साझा किया जाता है तक पहुँच रहे हैं, पुन: निर्देशित नहीं। http://msdn.microsoft.com/en-us/library/windows/desktop/ms724072(v=vs.85).aspx देखें और (अधिक विशेष रूप से) http://msdn.microsoft.com/en-us/library/windows/desktop/aa384253(v=vs.85).aspx

पहले लिंक (जोर मेरा) से:

पर 64-बिट Windows, भाग रजिस्ट्री प्रविष्टियाँ की 32-बिट अनुप्रयोग और के लिए अलग से जमा हो जाती है 64-बिट अनुप्रयोगों और अलग तार्किक रजिस्ट्री रजिस्ट्री पुनर्निर्देशक और रजिस्ट्री प्रतिबिंब का उपयोग विचारों में मैप किया गया है, क्योंकि एक आवेदन के 64-बिट संस्करण 32-बिट संस्करण की तुलना में अलग रजिस्ट्री कुंजी और मूल्यों का उपयोग कर सकते हैं। वहाँ भी रजिस्ट्री कुंजी है कि पुनः निर्देशित या प्रतिबिंबित नहीं साझा कर रहे हैं।

संबंधित मुद्दे