32位註冊表項在註冊表中的Wow6432node下時,OpenSubKey()和其他Microsoft.Win32註冊表函數在64位系統上返回null?爲什麼OpenSubKey()在我的Windows 7 64位系統上返回null?
我正在從.NET庫調用OpenSubKey()的單元測試框架。
我的開發系統是一個Windows 7 64位環境,安裝了Visual Studio 2008 SP1和Windows 7 SDK。
我們正在進行單元測試的應用程序是一個32位應用程序,因此根據HKLM\Software\Wow6432node
虛擬化了註冊表。當我們致電:返回
Registry.LocalMachine.OpenSubKey(@"Software\MyCompany\MyApp\");
空,但明確說明在這裏尋找工作:
Registry.LocalMachine.OpenSubKey(@"Software\Wow6432node\MyCompany\MyApp\");
從我明白這個功能應該是不可知的32位或64位環境和宜知道跳轉到虛擬節點。
更奇怪的是,在我們的應用程序的編譯和安裝版本中完全相同的調用在相同的系統上運行得很好,並且正在獲取運行所需的註冊表項;其中也被放置在HKLM\Software\Wow6432node
。
我該怎麼辦?
跟進:事實證明,我們並不需要創建新的平臺目標。我們通過nunit運行測試,它發佈一個x86特定的可執行文件。使用x86特定的可執行文件允許測試在不更改框架的情況下訪問註冊表。 – BrMcMullin
我在這裏找到了答案[http://stackoverflow.com/questions/1074411/how-to-open-a-wow64-registry-key-from-a-64-bit-net-application](http://stackoverflow .com/questions/1074411/how-to-open-a-wow64-registry-key-from-a-64-bit-net-application) – Jirapong