注册表和注册表配置单元的区别是什么
本文关键字:注册表 区别 是什么 单元 配置 | 更新日期: 2023-09-27 18:28:50
当我运行以下命令时,rKey有两个值。
RegistryKey sqlServer = Registry.LocalMachine.OpenSubKey( @"SOFTWARE'Microsoft'Microsoft SQL Server", false);
当我(在同一台机器上和同一用户)运行以下任一命令时,我找不到任何值;
RegistryKey sqlServer64 = RegistryKey.OpenBaseKey( RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey sqlServer32 = RegistryKey.OpenBaseKey( RegistryHive.LocalMachine, RegistryView.Registry32 );
有人能给我指一下蜂箱与普通注册表访问的答案或描述吗?
编辑:之后我要做的是:
StringBuilder sbKeys = new StringBuilder();
foreach (var key in sqlServer.GetValueNames() )
{
sbKeys.AppendLine( key );
}
对于所有注册表项。对于sqlServer,我看到两个值,对于sqlServer32和SqlServer64,没有值。
第二个变体中的问题是未能打开子密钥。您的sqlServer.GetValueNames()
调用在特定配置单元的根级别上运行。
你需要它是这样的:
RegistryKey root = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey sqlServer = root.OpenSubKey(@"SOFTWARE'Microsoft'Microsoft SQL Server");
foreach (var key in sqlServer.GetValueNames())
{ .... }
这样做与您的第一个变体没有什么不同(除了注册表视图)。我希望使用适当的注册表视图可以解决您的另一个问题。
当然,您会希望在上面的代码中添加一些错误检查