使用InstallUtil安装.NET服务

我正在尝试安装我写的.NET服务。 按照MSDN的build议,我正在使用InstallUtil。 但是我错过了如何在命令行或服务本身设置默认服务用户。 现在,运行InstallUtil时,它将显示一个对话框,要求用户input用户的凭据。 我试图将服务安装集成到一个更大的安装,并需要服务安装保持沉默。

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

正如你注意到的,Karim,“账户”属性就是解决scheme,在这里。 对于那些对此属性设置的安全上下文感兴趣的人:

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

上面使用InstallUtil或SC,我喜欢创build一个自我安装程序的想法:

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

即使我在.net 1.1文档中发现了这一点:

ManagedInstallerClasstypes支持.NET Framework基础结构,不能在代码中直接使用。

还要记住不需要安装visual studio的SC.exe util 。 你可以简单地把这个exe文件复制到你想创build服务的服务器上,甚至是远程运行它 。 使用obj参数指定用户。

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

您是否被要求在该帐户下运行该服务,或者是否有权安装该服务? 第二,作为pipe理员安装应该防止发生。 首先,你必须添加一个ServiceProcessInstaller到你的安装程序。

我相信服务的devise表面有一个链接来创build一个项目安装程序。 在该devise器上,可以添加System.ServiceProcess.ServiceProcessInstallertypes的进程安装程序。 此对象的属性允许您设置用于服务的帐户。