10

I am installing a Windows service using WiX. How can I make the service run in the context of Windows User that runs the installer?

4

1 に答える 1

25

サービスを実行するユーザーのアカウント名とパスワードの両方が必要です。ユーザー名とパスワードを要求するカスタム UI をインストーラーに追加し、ServiceInsall 要素の Account 属性と Password 属性に提供された値を使用することで、これを実現できました。

サービスを実行するために使用されるアカウントには、サービスとしてログオンする特権が必要であることに注意してください。これは、デフォルトではユーザーに付与されていません。UtilExtension スキーマの User 要素を使用して、この特権をユーザーに追加することができました。ユーザーへの特権の追加は、インストーラーを実行しているユーザーが管理者である場合にのみ成功します。

これが私が使用したコードです。SERVICECREDENTIALS_USERLOGIN および SERVICECREDENTIALS_PASSWORD は、カスタム UI から設定されたプロパティです。

<Component Id="ServiceEXE" Guid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
  <File Id="ServiceEXE" Name="YourService.exe" DiskId="1"
        Source="path\to\YourService.exe" KeyPath="yes" />
  <util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[SERVICECREDENTIALS_USERLOGIN]"
             LogonAsService="yes" />
  <ServiceInstall Id="ServiceInstall" Type="ownProcess" Vital="yes" Name="YourService"
                  DisplayName="Your Service" Description="Your Service description"
                  Start="auto" Account="[SERVICECREDENTIALS_USERLOGIN]" Password="[SERVICECREDENTIALS_PASSWORD]"
                  ErrorControl="normal" Interactive="no" />
  <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="YourService" Wait="yes" />
</Component>
于 2009-09-30T18:33:53.027 に答える