首先需要判断是否为64位操作系统,64位操作系统运行Build32位程序的话需要在注册表WOW6432根节点下读取注册表内容,32位则直接在SOFTWARE下面读取即可
//判断当前是64位系统还是32位系统,读取注册表时使用的是不一样的节点
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool lpSystemInfo);
private static bool Is64Bit()
{
bool retVal;
IsWow64Process(Process.GetCurrentProcess().Handle, out retVal);
return retVal;
}
//读取注册表
private void GetRegedit()
{
string sKeyAddress = (Is64Bit()) ? @"SOFTWARE\WOW6432Node\XXX\Application" : @"SOFTWARE\XXX\Application";
RegistryKey regkey = Registry.LocalMachine.OpenSubKey(@sKeyAddress);
string[] sNodeName = regkey.GetValueNames();
//IP
string sSocketIP = regkey.GetValue("SocketIPTeller").ToString();
//Port
string sSocketPort = regkey.GetValue("SocketPORT_Audio").ToString();
}