我正在尝试使用VisualStudio.Net部署项目安装C#windows服务项目。
要运行部署项目,我右键单击并从上下文菜单中选择“安装”,安装向导运行并最终通过“设置服务登录”对话框提示我,该对话框要求输入用户名&密码。
当我从命令行使用sc实用程序安装服务时,我不必提供凭据。
我是否必须为此服务创建登录?我宁愿像其他服务一样使用“本地系统”或“网络服务”(不确定区别是什么)。
答案 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
)。如果您需要其他自定义操作,可以添加其他方法(Install
,Rollback
,Uninstall
)。
答案 3 :(得分:2)
有关不同帐户及其权限的详细信息,请参阅以下链接:
http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx
答案 4 :(得分:0)