參考了https://cloud.tencent.com/developer/ask/172223
64位WIN7系統 Client端訪問能獲取到註冊表Wow6432Node位置
64位WIN7系統 WebService端訪問,獲取註冊表Wow6432Node位置為Null
registryKey2= Registry.LocalMachine;
registryKey2.OpenSubKey("SOFTWARE")
registryKey2.OpenSubKey("Wow6432Node")
解決方案: 判斷是64位,還是32位系統,分別獲取
// 根據系統位數,獲取註冊表
RegistryView winView = RegistryView.Registry64;
if (win == "32")
{
winView = RegistryView.Registry32;
}
registryKey2 = RegistryKey.OpenBaseKey( Microsoft.Win32.RegistryHive.LocalMachine, winView);
registryKey2.OpenSubKey("SOFTWARE");
//64位系統時,WebService也能獲取到Wow6432Node的位置
registryKey2.OpenSubKey("Wow6432Node");
//獲取系統是32位還是64位
private ushort GetOSAddressWidth()
{
ushort result;
try
{
SelectQuery query = new SelectQuery("select AddressWidth from Win32_Processor");
ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(query);
ManagementObjectCollection managementObjectCollection = managementObjectSearcher.Get();
using (ManagementObjectCollection.ManagementObjectEnumerator enumerator = managementObjectCollection.GetEnumerator())
{
while (enumerator.MoveNext())
{
ManagementObject managementObject = (ManagementObject)enumerator.Current;
foreach (PropertyData current in managementObject.Properties)
{
if (current.Name.Equals("AddressWidth"))
{
result = Convert.ToUInt16(current.Value);
return result;
}
}
}
}
throw new Exception("Didn't get expected query result from WMI.");
}
catch (Exception ex)
{
throw new Exception("Error occurs in WMI query.", ex.InnerException);
}
return result;
}