我有一个使用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位程序进行了虚拟化。