我有一个ServiceProcessInstaller
安装 .NET Windows 服务的。
如果我符合以下任一条件,安装过程将完美运行:
- 将服务设置为以 SYSTEM (
serviceProcessInstaller1.Account = ServiceAccount.LocalSystem
) 身份运行。 serviceProcessInstaller1.Account = ServiceAccount.User
通过指定Username
andPassword
属性或让安装过程提示我,将服务设置为作为普通用户 ( ) 运行。
但是,我希望该服务以虚拟用户身份运行,例如 la NT Service\ServiceName
。如果您查看一些 SQL Server 服务,您会看到它们默认以自己的虚拟用户帐户登录。在http://technet.microsoft.com/en-us/library/dd548356.aspx上有更多信息,尽管有限。
我尝试过设置serviceProcessInstaller1.Username = @"NT Service\ServiceName"
,但是无论我提供什么密码,安装程序都会引发以下错误(我尝试过String.Empty
,与用户名相同,我自己的密码,null
以调出交互式对话框,甚至是随机垃圾):
未完成帐户名称和安全 ID 之间的映射
但是,如果我正常安装服务(例如以 SYSTEM 身份运行),然后我可以从services.msc
管理单元进入服务的属性,在登录页面上将用户更改为NT Service\ServiceName
,它工作得很好。
我也研究了这个ChangeServiceConfig2
功能,但我似乎也无法让它改变任何东西。
如何NT Service\ServiceName
从我的代码中将登录用户设置为虚拟用户ServiceProcessInstaller
?