Domanda

Sto cercando di installare una .Servizio di rete che ho scritto.Come consigliato da MSDN, sto utilizzando InstallUtil.Ma ho perso come posso impostare il valore predefinito utente del servizio di linea di comando o anche nel servizio stesso.Ora, quando InstallUtil è in esecuzione, verrà visualizzata una finestra di dialogo che chiede all'utente le credenziali di un utente.Sto cercando di integrare il servizio di installazione in un grande installare e hai bisogno di un servizio di installazione di rimanere in silenzio.

È stato utile?

Soluzione

Penso di aver trovato.Il servizio, creato automaticamente ServiceProcessInstaller componente ha una proprietà "Account", che può essere impostato su "LocalService", "LocalSystem", "servizio di rete" o "Utente".E ' stato inadempiente per "Utente" che deve essere visualizzato il prompt.

Altri suggerimenti

Come avrete notato, Karim, il "Conto" la proprietà è la soluzione, qui.Per chi è interessato alle differenze tra contesti di sicurezza set da questa proprietà:

http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx

Sopra utilizzando InstallUtil o SC, mi piace l'idea di creare un AUTO INSTALLER:

http://www.codeproject.com/KB/dotnet/WinSvcSelfInstaller.aspx

anche se ho trovato questo nel .Net 1.1 documentazione:

Il ManagedInstallerClass tipo supporta il .NET Framework infrastrutture e non è destinato a essere utilizzato direttamente dal codice.

Anche tenere a mente il SC.exe util che non richiede visual studio per essere installato.Si può semplicemente copiare questo file exe per il server che si desidera creare il servizio o anche eseguirlo in modalità remota.Utilizzare il obj parametro per specificare un utente.

A quanto pare c'è una GUI per questo strumento, ma che non ho usato.

Vi viene chiesto il conto per l'esecuzione del servizio, o per i diritti di installare il service?Per il secondo, l'installazione come amministratore dovrebbe impedire che ciò accada.Per la prima volta, è necessario aggiungere un ServiceProcessInstaller per il vostro Installatore.

Credo che la progettazione di un servizio ha un link per creare un Progetto di installazione.Che designer, è possibile aggiungere un processo di programma di installazione di Sistema di tipo.ServiceProcess.ServiceProcessInstaller.Le proprietà di questo oggetto consente di impostare l'account da utilizzare per il servizio.

InstallUtil ha opzioni della riga di comando che può evitare le istruzioni durante l'utilizzo di "Utente", come il tipo di conto. /username e /password sono utilizzati configurare l'account al momento dell'installazione.

Utilizzo:

installutil.exe /username=user /password=password yourservice.exe

Quello che si può desiderare è quello di avere un file di configurazione in cui il programma di installazione in grado di leggere e installare il servizio.

Per fare questo, aggiungere un servizio programma di installazione per il vostro progetto, sovraccarico e il metodo di installazione.In questo metodo, impostare il nome utente e la password:

public override void Install(IDictionary stateSaver)
{
    serviceProcessInstaller1.Username="<username>";
    serviceProcessInstaller1.Password="<password>";
    base.Install(stateSaver);
}

Se si tenta di impostare il nome utente e la password nel costruttore, tali valori verranno sovrascritti, in modo da assicurarsi che si esegue l'override "Installa" per farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top