C# 访问作为服务运行的注册表中的CLSID。
我正在系统帐户下运行一个C#服务,试图访问以下注册表项: \CLSID{8E7FE1EC-79FA-43DF-9452-B71542599B3C}\InProcServer32\ 密钥存在,我可以在单元测试期间访问它(单元测试在当前用户下运行)。该服务可以访问根类中的其他键,但当我尝试访问CLSID子键中的任何内容时,它都会失败C# 访问作为服务运行的注册表中的CLSID。,c#,registry,C#,Registry,我正在系统帐户下运行一个C#服务,试图访问以下注册表项: \CLSID{8E7FE1EC-79FA-43DF-9452-B71542599B3C}\InProcServer32\ 密钥存在,我可以在单元测试期间访问它(单元测试在当前用户下运行)。该服务可以访问根类中的其他键,但当我尝试访问CLSID子键中的任何内容时,它都会失败 var regPermission = new RegistryPermission(RegistryPermissionAccess.AllAc
var regPermission = new RegistryPermission(RegistryPermissionAccess.AllAccess,
@"HKEY_CLASSES_ROOT\" + regPath);
regPermission.Demand();
using (var regKey = rootKey.OpenSubKey(regPath))
{
if (regKey != null)
{
string defaultValue = (string)regKey.GetValue("");
{
return defaultValue;
}
}
else
{
Logger.Info("Unable to open " + regPath);
}
}
对于CLSID下的任何内容,我的代码返回“无法打开”+regPath
任何关于为什么会发生这种情况的提示都将不胜感激,因为HKEY_CLASSES_ROOT只是一个指向
HKEY_CURRENT_USER\Software\CLASSES
的指针,当noboy登录时。。。那它就不存在了。真正的配置单元可以在HKEY_USERS\{user_guid |.DEFAULT}\Software\Classes
下找到,因此除非您知道用户的guid,否则必须使用.DEFAULT
您可以尝试改用HKEY\U LOCAL\U MACHINE\Software\Classes