Question

Je suis en train d'installer une .NET service que j'ai écrit.Comme recommandé par le MSDN, je suis en utilisant InstallUtil.Mais j'ai déjà oublié comment je peux définir le service par défaut de l'utilisateur sur la ligne de commande ou même dans le service lui-même.Maintenant, quand InstallUtil est exécuté, il affiche une boîte de dialogue demandant à l'utilisateur les informations d'identification d'un utilisateur.Je suis en train d'intégrer le service de l'installation dans un plus grand installer et ont besoin d'un service d'installation de garder le silence.

Était-ce utile?

La solution

Je crois que j'ai trouvé.Dans le service lui-même, automatiquement créés ServiceProcessInstaller composant a une propriété "Compte", qui peut être réglé sur "LocalService", "LocalSystem", "service réseau" ou "l'Utilisateur".Il a été défaillant à "l'Utilisateur" qui doit afficher l'invite de commandes.

Autres conseils

Comme vous avez remarqué, Karim, "Compte" de la propriété est la solution, ici.Pour ceux qui s'intéressent à des différences entre les contextes de sécurité fixées par cette propriété:

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

Ci-dessus à l'aide de InstallUtil ou SC, j'aime l'idée de la création d'un AUTO-INSTALLATEUR:

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

même si j'ai trouvé ça dans la .Net 1.1 documentation:

L' ManagedInstallerClass type prend en charge la .NET Framework l'infrastructure et n'est pas destiné à être utilisé directement à partir de votre code.

Aussi garder à l'esprit la SC.exe util qui ne nécessite pas de visual studio pour être installé.Vous pouvez simplement copier ce fichier exe sur le serveur que vous souhaitez créer le service ou même exécuter à distance.L'utilisation de la obj paramètre pour spécifier un utilisateur.

Apparemment, il y a une interface graphique pour cet outil, mais je n'ai pas utilisé.

Êtes-vous demandé pour le compte d'exécuter le service en vertu de, ou les droits à installer le service?Pour la deuxième, l'installation en tant qu'administrateur doit éviter que cela se produise.Pour la première, vous devez ajouter un ServiceProcessInstaller à votre Installateur.

Je crois que la conception de la surface pour un service a un lien pour créer un Projet d'installation.Sur que designer, vous pouvez ajouter un processus d'installation de Système de type.ServiceProcess.ServiceProcessInstaller.Les propriétés de cet objet vous permettent de régler le compte à utiliser pour le service.

InstallUtil a commutateurs de ligne de commande qui permet d'éviter les invites lors de l'utilisation de "l'Utilisateur" comme type de compte. /username et /password sont utilisés configurer le compte au moment de l'installation.

Utilisation:

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

Ce que vous voulez est d'avoir un fichier de config où le programme d'installation peut lire et installer le service.

Pour ce faire, ajoutez un service programme d'installation sur votre projet, et la surcharge de la méthode d'installation.Dans cette méthode, définissez le nom d'utilisateur et le mot de passe:

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

Si vous essayez de définir le nom d'utilisateur et le mot de passe dans le constructeur, ces valeurs vont être remplacés, alors assurez-vous de remplacer "Installer" pour le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top