Windows服务设置用户帐户

Windows服务设置用户帐户,windows,service,Windows,Service,我想在安装之前设置Windows服务的用户帐户。 我是通过在project installer中添加代码来实现的 this.serviceProcessInstaller1.Account=System.ServiceProcess.ServiceAccount.User; this.serviceProcessInstaller1.Password=ConfigurationSettings.AppSettings[“Password”]; this.serviceProcessInstall

我想在安装之前设置Windows服务的用户帐户。 我是通过在project installer中添加代码来实现的

this.serviceProcessInstaller1.Account=System.ServiceProcess.ServiceAccount.User; this.serviceProcessInstaller1.Password=ConfigurationSettings.AppSettings[“Password”]; this.serviceProcessInstaller1.Username=ConfigurationSettings.AppSettings[“用户名”]

仍然提示输入用户名和密码。安装完成时,配置文件似乎尚未准备就绪


如何从配置文件中提取用户名和密码,而不是对其进行硬编码?

好吧,我不知道为什么在安装程序运行时,AppSettings值不能以传统方式读取。我自己试过了,遇到了和你一样的问题。但是,通过将配置文件作为常规XML文件加载并以这种方式读取,我能够绕过这个问题。试试这个:

XmlDocument doc = new XmlDocument();
doc.Load(Assembly.GetExecutingAssembly().Location + ".config");

XmlElement appSettings = (XmlElement)doc.DocumentElement.GetElementsByTagName("appSettings")[0];

string username = null;
string password = null;

foreach (XmlElement setting in appSettings.GetElementsByTagName("add"))
{
    string key = setting.GetAttribute("key");
    if (key == "username") username = setting.GetAttribute("value");
    if (key == "password") password = setting.GetAttribute("value");
}

serviceProcessInstaller1.Account = ServiceAccount.User;
serviceProcessInstaller1.Username = username;
serviceProcessInstaller1.Password = password;

谢谢你的解决方案。成功了。但我有一个疑问。如果我需要更改用户名,我无论如何都需要更改配置文件并重新构建它以使安装程序生效。这项功能将如何帮助我?你不需要重建项目;这就是使用配置文件的要点。您只需更新配置文件,然后重新安装服务。至于此功能将如何帮助您,我假设您已经有了一个很好的理由需要在安装期间从配置文件中获取值,否则您可能会问另一个问题!此解决方案将不允许您在安装服务后动态更改运行该服务的帐户(如果您正尝试这样做)。这是另一个问题。这里有一个解决方案: