【问题标题】:Write to HKLM from Visual Studio 2010 deployment project从 Visual Studio 2010 部署项目写入 HKLM
【发布时间】:2011-06-28 00:35:48
【问题描述】:

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

任何帮助将不胜感激。

问候

克里斯

【问题讨论】:

  • 我在 CustomAction 上找不到好的参考,所以我无法验证,但也许您在 CustomAction 的“安装”部分没有提升权限?您是否尝试过将该代码移至“提交”。
  • 刚刚尝试了提交操作,结果相同!现在已将代码移至控制台应用程序,使用管理凭据显式运行,也没有运气。我看不出有任何理由说明我对 HKLM 的安全设置不是库存!
  • 你保存的是什么用户名和密码?
  • 嗨 Oskar,它们只是干净的字符串。 “123”和“123”。

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


【解决方案1】:

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

【讨论】:

  • 准确!塔的解释!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多