2012-03-05 8 views
6

Ho un servizio di Windows che dovrebbe essere eseguito con un account di dominio specificato dall'utente durante l'installazione.consentire all'utente di specificare in quale conto un servizio viene eseguito

Come è possibile con un programma di installazione Wix (vale a dire chiedere all'utente un account + password che deve essere utilizzato dal servizio)?

Sfondo

Il mio servizio ha bisogno di accedere a una condivisione di rete e LocalSystem non dispone dei diritti appropriati in modo che voglio utilizzare un account utente di dominio esistente.

risposta

7

ServiceInstall elemento è tuo amico qui. Contiene gli attributi Account e Password. Così, l'autore di un paio di controlli sul dialogo:

<Control Type="Edit" Property="ACCOUNT" ... /> 
<Control Type="Edit" Property="PASSWORD" Password="Yes" ... /> 

E utilizzare queste proprietà per istruire ServiceInstall:

<ServiceInstall Id="..." Account="[ACCOUNT]" Password="[PASSWORD]" Type="ownProcess" ... /> 

Spero che questo aiuti.

+0

Credo di vedere che cosa vuoi dire: devo aggiungere la mia finestra di dialogo personalizzata al programma di installazione che chiede all'utente per un account + password. Posso usare quei valori nell'elemento 'ServiceInstall' per configurare un account. Corretta? Non c'è una finestra standard pronta per l'uso che posso usare? – nabulke

+0

corretto. No, non c'è una finestra di dialogo standard, per quanto ne so, ma dovrebbe essere abbastanza semplice crearlo –

+0

Grazie per il tuo aiuto. – nabulke

3

È necessario avere sia il nome dell'account e la password per l'utente che si desidera eseguire il servizio come. Sono stato in grado di farlo aggiungendo un'interfaccia utente personalizzata al mio programma di installazione chiedendo un nome utente e una password, quindi utilizzando i valori forniti per gli attributi Account e Password nell'elemento ServiceInsall.

Si noti che ciò che mai account viene utilizzato per eseguire il servizio dovrà avere l'Accesso come servizio privilegiato. Questo non è concesso agli utenti per impostazione predefinita. Sono stato in grado di utilizzare l'elemento User dallo schema UtilExtension per aggiungere questo privilegio all'utente. L'aggiunta del privilegio all'utente avrà esito positivo solo se l'utente che esegue il programma di installazione è un amministratore.

Ecco il codice che ho usato. SERVICECREDENTIALS_USERLOGIN e SERVICECREDENTIALS_PASSWORD sono le proprietà popolate dall'interfaccia utente personalizzata.

<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> 

per ulteriori informazioni: http://skullpsgblog.blogspot.in/2015/11/in-wix-setting-services-user-account.html

Problemi correlati