从Visual Studio 2010部署项目写入HKLM

时间:2011-06-27 10:41:59

标签: c# visual-studio-2010 deployment registry

我有一个使用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)。结果是一样的。

任何帮助都会受到极大关注。

此致

克里斯

1 个答案:

答案 0 :(得分:4)

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