
Installing a .NET service using InstallUtil我正在尝试安装我编写的.NET服务。 根据MSDN的建议,我正在使用InstallUtil。 但是我错过了如何在命令行上甚至在服务本身中设置默认服务用户的方法。 现在,运行InstallUtil时,它将显示一个对话框,询问用户该用户的凭据。 我正在尝试将服务安装集成到较大的安装中,并且需要服务安装保持沉默。 我想我可能已经找到了。在服务本身中,自动创建的ServiceProcessInstaller组件具有属性" Account",可以将其设置为" LocalService"," LocalSystem"," NetworkService"或" User"。它默认为"用户",它必须已经显示了提示。 如您所知,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文档中发现了这一点:
另外请记住,不需要安装Visual Studio的SC.exe util。您可以简单地将此exe复制到要创建服务的服务器上,甚至可以远程运行它。使用obj参数指定用户。 显然,此工具有一个GUI,但我没有使用过。
InstallUtil具有命令行开关,当使用"用户"作为帐户类型时,可以避免出现提示。 用法:
您可能需要一个配置文件,安装程序可以在其中读取和安装服务。 这样做,将服务安装程序添加到您的项目,并重载安装方法。在此方法中,设置用户名和密码:
如果尝试在构造函数中设置用户名和密码,则这些值将被覆盖,因此请确保您覆盖" Install"来这样做。 是否要求您提供运行服务的帐户或安装服务的权利?第二,以管理员身份安装应避免这种情况的发生。首先,您必须将ServiceProcessInstaller添加到安装程序。 我相信服务的设计图面具有创建项目安装程序的链接。在该设计器上,可以添加类型为System.ServiceProcess.ServiceProcessInstaller的进程安装程序。该对象的属性允许您设置要用于该服务的帐户。 |