我正在尝试安装自己编写的 .NET 服务。根据 MSDN 的建议,我正在使用 InstallUtil 进行安装。但是我忘记了如何在命令行或者服务本身中设置默认的服务用户。现在,当运行 InstallUtil 时,它会显示一个对话框,要求用户输入用户凭据。我正在尝试将服务安装集成到更大的安装程序中,并需要服务安装保持静默。
我认为我可能找到了答案。在服务本身中,自动创建的ServiceProcessInstaller组件有一个名为“Account”的属性,可以设置为“LocalService”、“LocalSystem”、“NetworkService”或“User”。它默认为“User”,这可能会显示提示。
InstallUtil具有命令行开关,可以避免在使用"User"作为帐户类型时出现提示。 /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);
}
您是被要求提供运行服务的帐户,还是需要安装服务的权限?对于后者,以管理员身份安装应该可以防止发生这种情况。对于前者,您必须向您的Installer添加一个ServiceProcessInstaller。
我相信服务的设计界面有一个链接可以创建一个项目安装程序。在那个设计师上,您可以添加一个类型为System.ServiceProcess.ServiceProcessInstaller的进程安装程序。此对象的属性允许您设置用于服务的帐户。