【发布时间】: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