我有一个使用VS2010部署项目部署的Windows服务。我要求在安装程序中输入用户名/密码,然后将这些详细信息提交给注册表以供服务使用。

安装程序工作正常,并且自定义操作已正确设置。如果我尝试通向HKLM,则不会出错但也不会输出,对HKCU的相同命令也可以正常工作。这与标准用户和管理用户(包括RunAs)相同。

public override void Install(IDictionary stateSaver)
{
    base.Install(stateSaver);

    var username = Context.Parameters["username"];
    var password = Context.Parameters["password"];

    // HKLM\Software\MySoftware
    RegistryKey hklm = Registry.LocalMachine.CreateSubKey("SOFTWARE\\MySoftware");
    hklm.SetValue("username", username, RegistryValueKind.String);
    hklm.SetValue("password", password, RegistryValueKind.String);
    hklm.Close();

    // HKCU\Software\MySoftware
    RegistryKey hkcu = Registry.CurrentUser.CreateSubKey("SOFTWARE\\MySoftware");
    hkcu.SetValue("username", username, RegistryValueKind.String);
    hkcu.SetValue("password", password, RegistryValueKind.String);
    hkcu.Close();
}


我尝试使用.OpenSubkey(x,true)而不是CreateSubkey(x)。结果是一样的。

任何帮助将不胜感激。

问候

克里斯

最佳答案

在64位操作系统上,您可以在HKLM \ Software \ Wow6432Node \ MySoftware中找到这些密钥。这些注册表项针对32位程序进行了虚拟化。

09-18 07:19