我正在尝试创建一个WIX安装程序,将我的Windows服务安装到NetworkService帐户下运行,在安装过程中遇到了权限不足的错误。
我发现了这篇帖子,其中有人似乎遇到了同样的问题,但没有提供真正的解决方案:
http://n2.nabble.com/Re-WiX-users-Digest-Vol-40-Issue-129-td3782055.html
我相信之前有人已经实现过这个功能,不知道他们是否愿意分享一段代码片段?
我正在尝试创建一个WIX安装程序,将我的Windows服务安装到NetworkService帐户下运行,在安装过程中遇到了权限不足的错误。
我发现了这篇帖子,其中有人似乎遇到了同样的问题,但没有提供真正的解决方案:
http://n2.nabble.com/Re-WiX-users-Digest-Vol-40-Issue-129-td3782055.html
我相信之前有人已经实现过这个功能,不知道他们是否愿意分享一段代码片段?
注意:下面的答案仅适用于WIX和Windows旧版本,即在提出问题时。如果您设置本机的“NT AUTHORITY”域和“NetworkService”帐户(现在不需要空格),则当前版本的WIX服务凭据将起作用。
原始答案:
正确的标识名称是“NT Authority\Network Service”,而不是“NT Authority\NetworkService”。需要空格,然后才能正常工作。
有趣的是,默认的“LocalSystem”直接与WIX 3.5配合使用,但对于其他众所周知的帐户,您必须使用“NT Authority…”前缀,例如直接使用“LocalService”也不起作用。
即使用以下方式进行修复:
Account='NT Authority\Network Service'
<ServiceInstall Id="xserviceInstall" Name="$(var.xServiceid)"
DisplayName="$(var.xServiceid)"
Description="x service" Start="auto" Type="ownProcess"
ErrorControl="ignore"
Account="NT AUTHORITY\NETWORKSERVICE"
Arguments="-w -N" Vital="yes" />
看起来之前安装失败的一些残留物阻止了我使用Account="NT Authority\NetworkService"进行卸载和重新安装。现在宇宙中一切都很好。
我使用了customAction来检查用户凭据是否正确。
如果用户凭据与他们想要安装的计算机上的帐户匹配,我将允许他们继续到下一个对话框(UI),否则我将显示另一个对话框,告诉用户该帐户未找到。