Windows服务在安装时选择用户或系统帐户

时间:2010-12-15 18:47:06

标签: c# .net windows-services

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

3 个答案:

答案 0 :(得分:27)

@ 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名称。

答案 1 :(得分:6)

是的,它是关于流程安装程序的。我认为在较新的框架中,如果您在设计图面上选择了流程安装程序,它就是一个可见属性。我最后一次这样做(.net 2.0)你必须在* .designer.cs文件中添加类似的东西:

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

答案 2 :(得分:2)

添加到之前的答案,在输入"用户名"时,不要忘记将机器名称附加到用户名。密码提示字段。否则服务将不接受凭证,但如果您提供正确的用户名和密码。它将继续弹出提示输入凭据。我花了一天时间弄明白这一点。感谢Badgerspot!