使用InstallUtil安装.NET服务

时间:2008-08-28 13:03:25

标签: .net windows-services installutil

我正在尝试安装我写的.NET服务。根据MSDN的建议,我使用的是InstallUtil。但我错过了如何在命令行甚至服务本身设置默认服务用户。现在,当运行InstallUtil时,它将显示一个对话框,询问用户用户的凭据。我正在尝试将服务安装集成到更大的安装中,并且需要服务安装保持静默。

5 个答案:

答案 0 :(得分:44)

我想我可能已经找到了它。在服务本身中,自动创建的ServiceProcessInstaller组件具有属性“Account”,可以将其设置为“LocalService”,“LocalSystem”,“NetworkService”或“User”。它默认为“用户”,必须显示提示。

答案 1 :(得分:4)

正如您所注意到的,Karim,“帐户”属性就是解决方案。对于那些对此属性设置的安全上下文之间的差异感兴趣的人:

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

以上使用InstallUtil或SC,我喜欢创建 SELF INSTALLER 的想法:

http://www.codeproject.com/KB/dotnet/WinSvcSelfInstaller.aspx

即使我在.Net 1.1文档中找到了这个:

  

ManagedInstallerClass 类型   支持.NET Framework   基础设施并不打算   直接在您的代码中使用。

答案 2 :(得分:3)

另请注意 SC.exe util ,它不需要安装visual studio。您只需将此exe文件复制到要创建服务的服务器,甚至可以远程运行。使用 obj 参数指定用户。

显然这个工具有一个GUI,但我没有使用它。

答案 3 :(得分:0)

是否要求您在帐户下运行服务,或者是否有权安装该服务?对于第二个,安装为管理员应该防止这种情况发生。首先,您必须向安装程序添加ServiceProcessInstaller。

我相信服务的设计界面有一个创建Project Installer的链接。在该设计器上,您可以添加System.ServiceProcess.ServiceProcessInstaller类型的进程安装程序。此对象的属性允许您设置要用于服务的帐户。

答案 4 :(得分:0)

InstallUtil具有命令行开关,可以避免在使用"用户"作为帐户类型。 /username/password用于在安装时配置帐户。

用法:

installutil.exe /username=user /password=password yourservice.exe

您可能需要的是安装程序可以读取和安装服务的配置文件。

为此,请将服务安装程序添加到项目中,并重载安装方法。在此方法中,设置用户名和密码:

public override void Install(IDictionary stateSaver)
{
    serviceProcessInstaller1.Username="<username>";
    serviceProcessInstaller1.Password="<password>";
    base.Install(stateSaver);
}

如果您尝试在构造函数中设置用户名和密码,那么这些值将被覆盖,因此请确保覆盖&#34;安装&#34;这样做。