WIX ServiceInstall - 设置服务运行在NetworkService账户下

4

我正在尝试创建一个WIX安装程序,将我的Windows服务安装到NetworkService帐户下运行,在安装过程中遇到了权限不足的错误。

我发现了这篇帖子,其中有人似乎遇到了同样的问题,但没有提供真正的解决方案:

http://n2.nabble.com/Re-WiX-users-Digest-Vol-40-Issue-129-td3782055.html

我相信之前有人已经实现过这个功能,不知道他们是否愿意分享一段代码片段?


你的安装程序运行在哪个操作系统上?如果是Vista,UAC是否打开?如果是,安装程序是否在提升模式下运行? - Shay Erlichmen
我正在使用Vista操作系统,UAC已关闭。即使以管理员身份运行,安装仍然失败,但奇怪的是,我的同事分别在Vista和XP上运行时都可以正常工作。:S - Martin Cook
4个回答

5

注意:下面的答案仅适用于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'


好的..现在它在Windows 8.1上失败了! - JB.
请查看:https://dev59.com/onRB5IYBdhLWcg3wyqKo - Andy
@AnandChoubey,这个问题已经很久了,现在已经全部解决了,请查看编辑。账户之间的差异是明显的,当时的问题是如何在WIX中设置它。 - Tony Wall

1
我之前在Windows 8.1 FR和Windows 2012R2 ENU上使用以下代码片段,但使用“NT AUTHORITY\NETWORK SERVICE”会导致“权限不足”错误。因此,在最近的系统中,必须像MSDN所述一样使用“NT AUTHORITY\NETWORKSERVICE”。请注意保留HTML标签。
              <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" />

1

看起来之前安装失败的一些残留物阻止了我使用Account="NT Authority\NetworkService"进行卸载和重新安装。现在宇宙中一切都很好。


0

我使用了customAction来检查用户凭据是否正确。

如果用户凭据与他们想要安装的计算机上的帐户匹配,我将允许他们继续到下一个对话框(UI),否则我将显示另一个对话框,告诉用户该帐户未找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接