无法打开注册表子键

本文关键字:注册表 | 更新日期: 2023-09-27 18:14:19

不能打开注册表子键即使我试图打开- x64和x32注册表。我正在尝试获取登录visual studio用户的用户名。

@"Software'Microsoft'VisualStudio'12.0'ConnectedUser'IdeUser'Cache"

无法看到IdeUser,但是Cache返回NULL

const string SubKey = @"Software'Microsoft'VisualStudio'12.0'ConnectedUser'IdeUser'Cache";
const string EmailAddressKeyName = "EmailAddress";
const string UserNameKeyName = "DisplayName";
RegistryKey localMachineRegistry64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
RegistryKey reg64 = localMachineRegistry64.OpenSubKey(SubKey, false);
if (reg64 != null)
{
    return reg64.GetValue(SubKey, true).ToString();
}
//Check the 32-bit registry for "HKEY_LOCAL_MACHINE'SOFTWARE" if not found in the 64-bit registry:
RegistryKey localMachineRegistry32 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry32);
RegistryKey reg32 = localMachineRegistry32.OpenSubKey(SubKey, false);
if (reg32 != null)
{
    return reg32.GetValue(SubKey, true).ToString();
}

无法打开注册表子键

我已经测试了你的代码,它的工作方式正如我所期望的那样(在某种程度上)。我可以访问子密钥。*注意,我以管理员身份运行VS。(右键单击VS exe并以管理员身份运行,我也是本地管理员我的开发机器,所以我有不受限制的注册表访问)。

然而,你的代码有点有趣,因为你实际上没有通过调用GetValue(SubKey,true)来访问注册表中的值,在我的例子中,我相应地改变了。

const string SubKey = @"Software'Microsoft'VisualStudio'12.0'ConnectedUser'IdeUser'Cache";
const string EmailAddressKeyName = "EmailAddress";
const string UserNameKeyName = "DisplayName";
RegistryKey localMachineRegistry64 = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64);
RegistryKey reg64 = localMachineRegistry64.OpenSubKey(SubKey, false);
if (reg64 != null)
{
    //******** This is just an example of getting the user name and email.
    //get user name and email from the selected sub key.
    var userName = reg64.GetValue(UserNameKeyName, String.Empty).ToString();
    var emailAddress = reg64.GetValue(EmailAddressKeyName, String.Empty).ToString();
    //return a bool and pass back the userName and email as out parms?
    return true;
}

希望对你有帮助。

EDIT -

如果注册表访问仍然是一个问题,您可以通过ProcMon从sysinternals监视注册表访问