最近寫一個小工具用到了使用C#來進行註冊表的操作,使用C#來進行註冊表的操作需要引入命名空間Microsoft.Win32,關於操作註冊表的幫助類可以參考RegHelper.cs。下面分別使用VS2010和VS2008使用Any CPU、X64、X86和Itanium進行編譯,運行在32位機器和64位機器進行對比。看下面一段代碼:
- string subkey = @"software\FW\UserInfo";
- RegHelper reg = new RegHelper(subkey, RegDomain.LocalMachine);
- reg.CreateSubKey(subkey);
- Console.ReadLine();
上面代碼的本意是在註冊表中創建HKEY_LOCAL_MACHINE\SOFTWARE\FW\UserInfo 節點,在32位機器中沒有什麼問題,可以正常的生產節點,但在64位機器上,不同的VS版本,使用不同的編譯模式,會產生不一樣的結果。
項目類型 | VS版本 | 目標平臺 | 機器位數 | 節點路徑 |
控制檯項目 | VS2008 | Any CPU | 64 | HKEY_LOCAL_MACHINE\SOFTWARE\FW\UserInfo |
X86 | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo | |||
X64 | HKEY_LOCAL_MACHINE\SOFTWARE\FW\UserInfo | |||
VS2010 | Any CPU | HKEY_LOCAL_MACHINE\SOFTWARE\FW\UserInfo | ||
X86 | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo | |||
X64 | HKEY_LOCAL_MACHINE\SOFTWARE\FW\UserInfo | |||
網站項目 | VS2008 | Any CPU | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo | |
X86 | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo | |||
X64 | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo | |||
VS2010 | Any CPU | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo | ||
X86 | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo | |||
X64 | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo | |||
WinForm項目 | VS2008 | Any CPU | HKEY_LOCAL_MACHINE\SOFTWARE\FW\UserInfo | |
X86 | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo | |||
X64 | HKEY_LOCAL_MACHINE\SOFTWARE\FW\UserInfo | |||
VS2010 | Any CPU | HKEY_LOCAL_MACHINE\SOFTWARE\FW\UserInfo | ||
X86 | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo | |||
X64 | HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FW\UserInfo |