使用InstallUtil安装.NET服务

时间:2020-03-05 18:44:21  来源:igfitidea点击:

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

解决方案

回答

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

回答

是否要求我们提供运行该服务的帐户或者安装该服务的权利?第二,以管理员身份安装应避免这种情况的发生。首先,我们必须将ServiceProcessInstaller添加到安装程序。

我相信服务的设计图面具有创建项目安装程序的链接。在该设计器上,我们可以添加类型为System.ServiceProcess.ServiceProcessInstaller的进程安装程序。该对象的属性允许我们设置用于该服务的帐户。

回答

另外请记住,不需要安装Visual Studio的SC.exe util。我们可以简单地将此exe复制到要创建服务的服务器上,甚至可以远程运行它。使用obj参数指定用户。

显然,此工具有一个GUI,但我没有使用过。

回答

如我们所见,Karim的"帐户"属性是解决方案。对于那些对此属性设置的安全上下文之间的差异感兴趣的人:

http://msdn.microsoft.com/zh-CN/library/system.serviceprocess.serviceaccount.aspx

上面使用InstallUtil或者SC,我喜欢创建一个SELF INSTALLER的想法:

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

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

The ManagedInstallerClass type
  supports the .NET Framework
  infrastructure and is not intended to
  be used directly from your code.