我正试图使用VisualStudio.Net部署项目安装一个C# Windows服务项目。
要运行部署项目,我右键单击并从上下文菜单中选择“安装”,然后安装向导运行,并最终提示我出现“设置服务登录”对话框,要求输入用户名和密码。
当我使用命令行中的sc实用程序安装服务时,无需提供凭据。
我是否必须为此服务创建登录凭据?我希望像其他服务一样使用“本地系统”或“网络服务”(不确定区别)。
我正试图使用VisualStudio.Net部署项目安装一个C# Windows服务项目。
要运行部署项目,我右键单击并从上下文菜单中选择“安装”,然后安装向导运行,并最终提示我出现“设置服务登录”对话框,要求输入用户名和密码。
当我使用命令行中的sc实用程序安装服务时,无需提供凭据。
我是否必须为此服务创建登录凭据?我希望像其他服务一样使用“本地系统”或“网络服务”(不确定区别)。
将以下代码添加到您的Windows服务项目中projectInstaller.Designer.cs
文件中的私有void 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
请注意这个部分:创建服务的安装程序
对 ServiceProcessInstaller 进行更改:
在设计器中,对于 Visual Basic 项目,请单击 ServiceProcessInstaller1,对于 Visual C# 项目,请单击 serviceProcessInstaller1。将 Account 属性设置为 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");
}
}
}
然后,在解决方案资源管理器中,右键单击部署项目并选择“查看 > 自定义操作”。右键单击自定义操作,选择“添加自定义操作...” 选择应用程序文件夹并选择包含服务的项目的主输出。现在,安装时将执行自定义操作(来自上面的 Commit
)。如果您需要其他自定义操作,可以添加其他方法(Install
、Rollback
、Uninstall
)。
Install
方法中,我设置了“Account”属性。现在已经修复了... - fre0n有关不同帐户及其权限的详细信息,请参见以下链接:
http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx