【问题标题】:Windows Service Setting user accountWindows 服务设置用户帐户
【发布时间】:2010-08-13 15:33:16
【问题描述】:

我想在安装之前为 Windows 服务设置用户帐户。 我通过在项目安装程序中添加代码来做到这一点。

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.User; this.serviceProcessInstaller1.Password = ConfigurationSettings.AppSettings["password"]; this.serviceProcessInstaller1.Username = ConfigurationSettings.AppSettings["username"];

仍然提示输入用户名和密码。安装完成时,配置文件似乎还没有准备好。

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

【问题讨论】:

标签: windows service


【解决方案1】:

好吧,我不知道为什么在安装程序运行时以传统方式无法读取 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;

【讨论】:

  • 感谢您的解决方案。有效。但我有一个疑问。如果我需要更改用户名,无论如何我都需要更改配置文件并重新构建以制作安装程序。这个功能对我有什么帮助?
  • 你应该不需要重建项目;这就是使用配置文件的重点。您可以简单地更新配置文件,然后重新安装服务。至于此功能将如何帮助您,我假设您已经有充分的理由需要在安装期间从配置文件中获取值,否则您会问一个不同的问题!此解决方案将不允许您在安装服务后动态更改运行该服务的帐户(如果您正在尝试这样做)。这是一个不同的问题。
猜你喜欢
  • 1970-01-01
  • 2021-01-08
  • 2021-08-21
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多