32位程序访问64位系统上的Windows注册表
2020-12-13 02:47
标签:style class blog code java http 今天在工作的过程中遇到个奇怪的为问题,就是通过c#获取注册表键值的问题,一般都比较简单: 但是我要取得值就是没有得到,debug,发现setupkey返回为null,打开本机的注册表是有的阿,奇了怪了…… 这是怎么回事???? 问了同事,他也觉得奇怪。 后来我发现是不是注册表位数问题啊,一下子找到为什么系统返回是缺少的那些键值。 发现Wow6432Node下面返回的就是我们在debug时候的返回值。 这下感觉找到了解决问题的方向了。就是要解决32位程序访问64位系统上的Windows注册表的问题。 最后在网上找到了两位高人的解法,我在这里都贴出来 C#
32位程序访问64位系统注册表 使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表 最后我尝试使用了后一种方法,解决了这个问题。在此,非常感谢浪谷的解决方案。 32位程序访问64位系统上的Windows注册表,搜素材,soscw.com 32位程序访问64位系统上的Windows注册表 标签:style class blog code java http 原文地址:http://www.cnblogs.com/geixinyigejia/p/3782322.html string SQLPath = string.Empty;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey MSSQLServerKey = hkml.OpenSubKey(@"SOFTWARE\MICROSOFT\MSSQLServer");
if (MSSQLServerKey != null)
{
string[] keys = MSSQLServerKey.GetSubKeyNames();
RegistryKey setupKey = MSSQLServerKey.OpenSubKey("Setup");
if(setupKey!=null)
{
SQLPath = setupKey.GetValue("SQLPath").ToString();
}
}
public static string GetSQLServerInstallPath()
{
string SQLPath = string.Empty;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey MSSQLServerKey = hkml.OpenSubKey(@"SOFTWARE\MICROSOFT\MSSQLServer");
if (MSSQLServerKey != null)
{
string[] keys = MSSQLServerKey.GetSubKeyNames();
RegistryKey setupKey = MSSQLServerKey.OpenSubKey("Setup");
if(setupKey!=null)
{
SQLPath = setupKey.GetValue("SQLPath").ToString();
}
else
{
SQLPath = Get64BitRegistryKey(RegistryHive.LocalMachine, @"SOFTWARE\MICROSOFT\MSSQLServer\Setup", "SQLPath", RegistryView.Registry64);
}
}
return SQLPath;
}
///