【问题标题】:Windows Service Choose User or System Account on InstallWindows 服务在安装时选择用户或系统帐户
【发布时间】:2010-12-15 18:47:05
【问题描述】:

在安装 Windows 服务时,有没有办法让安装用户在特定用户帐户和计算机帐户(例如 LocalSystem)之间进行选择?我看到如何在构建时通过服务安装程序属性执行此操作,但不是在安装期间。

【问题讨论】:

  • 你用什么安装?微星的?命令行?
  • 我可能会使用自定义安装程序并调用 installutil。我见过这样做的案例,但我不确定它是如何工作的。

标签: c# .net windows-services


【解决方案1】:

@Doobi,@Eric,根据我的经验(Win7Home 64 位,VS2010Express,不在域上)

 processInstaller.Account = ServiceAccount.LocalService;
 processInstaller.Username = null;
 processInstaller.Password = null;

将服务作为 LocalService 安装,无需密码提示。

要将服务安装为本地用户帐户(并提供密码提示以使用户能够提供凭据),我必须使用:

 this.serviceProcessInstaller.Account =System.ServiceProcess.ServiceAccount.User;
 this.serviceProcessInstaller.Password = null;
 this.serviceProcessInstaller.Username = null;

安装该服务时我必须采取的重要步骤是将计算机名称放入凭据对话框中,即MYPC\dave 而不是dave。我很惊讶我必须这样做,因为它不在域上。我已经添加了这条评论,因为我没有看到其他关于这个提到必须在用户名前面加上 PC 名称的帖子。

【讨论】:

  • 感谢计算机名\用户名提示解决了我的问题
  • 用户名前面的域名也为我解决了这个问题。谢谢!
  • @FabianKöbel 我得到一个异常'服务器未找到或无法访问。 ' 如果我使用我的域。碰巧你知道发生了什么?
  • 您使用哪个域?请确保您可以与服务器建立网络连接
【解决方案2】:

是的,它在进程安装程序中。我认为在较新的框架中,如果您在设计图面上选择流程安装程序,它是一个可见的属性。上次我这样做(.NET 2.0)时,您必须在 *.designer.cs 文件中添加与此类似的内容:

 processInstaller.Account = ServiceAccount.LocalService;
 processInstaller.Username = null;
 processInstaller.Password = null;

【讨论】:

  • 那么这“如何让安装用户在特定用户帐户和计算机帐户之间进行选择,例如 LocalSystem”
  • 因为如果您将其设置为“ServiceAccount.User”并且不指定凭据,它会在您安装时提示用户输入凭据。
  • @Doobi,根据您的评论,您不是更需要这行代码吗? processInstaller.Account = ServiceAccount.User;
【解决方案3】:

添加到以前的答案,不要忘记在输入密码提示的“用户名”字段时将机器名称附加到用户名。否则,即使您提供正确的用户名和密码,服务也不会接受凭据。它将继续弹出提示输入凭据。我花了一天时间才弄清楚这一点。感谢 Badgerspot!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2020-05-12
    • 2023-03-10
    相关资源
    最近更新 更多