创建一个新用户并使用该用户安装 Windows 服务

问题描述 投票:0回答:3

我正在开发一个新的 Wix 安装程序。

  1. 我想做的是将 .exe 复制到目录中。
  2. 创建一个新用户。
  3. 使用该新用户安装 Windows 服务。

    <!-- Create User -->
    <util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="yes" Name="ServiceUser" PasswordNeverExpires="yes" Password="secret" />
    
    <ServiceInstall Id="ServiceInstaller"
                                       Type="ownProcess"
                                       Vital="yes"
                                       Name="Windows:service"
                                       DisplayName="Windows service install"
                                       Description="test"
                                       Start="auto"
                                       Account="ServiceUser"
                                       Password="secret"
                                       ErrorControl="ignore"
                                       Interactive="no" />
    <ServiceControl Id="StartService"
                    Start="install"
                    Stop="both"
                    Remove="uninstall"
                    Name="Windows:service"
                    Wait="yes" />
    

只要我使用当前的登录名和密码,创建用户就可以,安装服务就可以。 但当我尝试使用新用户时,我收到以下错误消息。

验证您是否有足够的权限来安装系统服务

enter image description here

我尝试以管理员身份运行 msi,但没有改变,错误仍然出现。 我猜测这与我没有权限安装在其他用途下运行的服务有关。 但这只是猜测。

wix windows-installer wix3.5
3个回答
3
投票

您需要使用 LogonAsService 作为 Util::User 元素的属性来授予用户 SeServiceLogonRight 权限。

FWIW,该错误消息非常通用并且通常是错误的,因为 Windows Installer 不可能知道为什么您的服务无法正确响应(启动)。 您可能会遇到其他问题(例如,您的服务写入了您的帐户有权访问但服务帐户没有权限的目录),但至少您遇到了此问题。

这里有一些有趣的事情。 在该屏幕上,进入 Services.msc 并手动将服务切换到 SYSTEM,然后返回到帐户。 您应该会收到提示,表明该帐户已被授予权限。 然后点击对话框中的“重试”。 如果安装成功,这是您唯一的问题。

这个权限可以在组策略编辑器中看到。 从那时起,安装似乎就可以工作了,因为由于 Services.msc,权限已经在外部设置了。 使用组策略恢复虚拟机或删除权限,问题就会再次出现。 修复安装程序,重建并重新测试,WiX 在安装过程中应该会自动应用正确的权限。


2
投票

除了LogonAsService之外,您还需要指定它是本地机器帐户:

Account=".\ServiceUser"

-3
投票

“Zuptek Agency 无疑是法里达巴德最好的 SEO 服务提供商机构 法里达巴德最佳 SEO 服务提供商机构

© www.soinside.com 2019 - 2024. All rights reserved.