安装Windows服务时的凭据

时间:2010-02-12 15:55:34

标签: c# windows-services install

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

要运行部署项目,我右键单击并从上下文菜单中选择“安装”,安装向导运行并最终通过“设置服务登录”对话框提示我,该对话框要求输入用户名&密码。

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

我是否必须为此服务创建登录?我宁愿像其他服务一样使用“本地系统”或“网络服务”(不确定区别是什么)。

5 个答案:

答案 0 :(得分:94)

将此代码添加到Windows服务项目的InitializeComponent()文件中的private void projectInstaller.Designer.cs方法中。

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

如果您处理安装程序的定义是:

private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;

答案 1 :(得分:19)

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

请注意以下部分:为您的服务创建安装程序

对ServiceProcessInstaller进行更改:

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

答案 2 :(得分:4)

在包含该服务的项目中,添加一个Installer类。看起来像这样:

[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");
        }
    }
}

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

答案 3 :(得分:2)

  1. 打开ProjectInstaller
  2. 右键单击ProcessInstaller并选择属性
  3. 从“帐户”下拉列表中,在“其他”下,选择您希望服务以
  4. 运行的帐户

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

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

答案 4 :(得分:0)

最简单的方法是单击您的 serviceProjectInstaller 并在属性窗口中进行设置。

enter image description here