安装Windows服务时的凭证

我正在尝试使用VisualStudio.Net部署项目安装C#windows服务项目。

要运行部署项目,请右键单击并从上下文菜单中select“安装”,然后运行安装向导,并最终提示我input要求input用户名和密码的“设置服务login”对话框。

当我从命令行使用sc实用程序安装服务时,我不必提供凭据。

我必须为此服务创buildlogin吗? 我更喜欢使用“本地系统”或“networking服务”(不知道与其他服务有什么不同)。

将此代码添加到您的Windows服务项目的projectInstaller.Designer.cs文件中的私有无效InitializeComponent()方法。

 this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem; 

如果你的进程安装程序的定义是:

 private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1; 

检查此链接: http : //msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx

请注意本节: 为您的服务创build安装程序

对ServiceProcessInstaller进行更改:

在devise器中,为Visual Basic项目单击ServiceProcessInstaller1,或为Visual C#项目单击serviceProcessInstaller1。 将帐户属性设置为LocalSystem。 这将导致服务被安装并在本地服务帐户上运行。

在包含该服务的项目中,添加一个安装程序类。 让它看起来像这样:

 [RunInstaller(true)] public class MyServiceInstaller : Installer { public MyServiceInstaller() { ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller(); serviceProcessInstaller.Account = ServiceAccount.LocalSystem; // Or whatever account you want var serviceInstaller = new ServiceInstaller { DisplayName = "Insert the display name here", StartType = ServiceStartMode.Automatic, // Or whatever startup type you want Description = "Insert a description for your service here", ServiceName = "Insert the service name here" }; Installers.Add(_serviceProcessInstaller); Installers.Add(serviceInstaller); } public override void Commit(IDictionary savedState) { base.Commit(savedState); // This will automatically start your service upon completion of the installation. try { var serviceController = new ServiceController("Insert the service name here"); serviceController.Start(); } catch { MessageBox.Show( "Insert a message stating that the service couldn't be started, and that the user will have to do it manually"); } } } 

然后,在解决scheme资源pipe理器中,右键单击部署项目,然后select“查看>自定义操作”。 右键单击自定义操作,然后select“添加自定义操作…”select应用程序文件夹并select包含该服务的项目的主要输出。 现在,自定义操作(上面的Commit )将在安装后执行。 如果您需要其他自定义操作,则可以添加其他方法( InstallRollbackUninstall )。

  1. 打开你的ProjectInstaller
  2. 右键单击ProcessInstaller并select属性
  3. 从“帐户”下拉菜单中的“其他”下,select希望服务运行的帐户

有关不同帐户及其权限的详细信息,请参阅以下链接:

http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx