web-dev-qa-db-fra.com

Informations d'identification lors de l'installation du service Windows

J'essaie d'installer un projet de service Windows C # à l'aide d'un projet de déploiement VisualStudio.Net.

Pour exécuter le projet de déploiement, je clique avec le bouton droit de la souris et sélectionne "installer" dans le menu contextuel, l'assistant d'installation s'exécute et m'invite finalement avec une boîte de dialogue "Définir la connexion au service" qui demande le nom d'utilisateur et le mot de passe.

Lorsque j'installe un service à l'aide de l'utilitaire sc à partir de la ligne de commande, je n'ai pas à fournir d'informations d'identification.

Dois-je créer un identifiant juste pour ce service? Je préfère utiliser "Système local" ou "Service réseau" (je ne sais pas quelle est la différence) comme le font d'autres services.

51
Keith

Ajoutez ce code à votre méthode void InitializeComponent() privée dans projectInstaller.Designer.cs fichier dans votre projet de service Windows.

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

si la définition de votre installateur de processus est:

private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
98
anthares

Vérifiez ce lien: http://msdn.Microsoft.com/en-us/library/zt39148a (v = vs.110) .aspx

Faites attention à cette section: Pour créer les installateurs pour votre service

Modifiez votre ServiceProcessInstaller:

Dans le concepteur, cliquez sur ServiceProcessInstaller1 pour un projet Visual Basic ou serviceProcessInstaller1 pour un projet Visual C #. Définissez la propriété Account sur LocalSystem. Cela entraînera l'installation du service et son exécution sur un compte de service local.

20
David

Dans le projet qui contient le service, ajoutez une classe Installer. Faites-le ressembler à ceci:

[RunInstaller(true)]
public class MyServiceInstaller : Installer
{
    public MyServiceInstaller()
    {
        ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller();
        serviceProcessInstaller.Account = ServiceAccount.LocalSystem; // Or whatever account you want

        var serviceInstaller = new ServiceInstaller
        {
            DisplayName = "Insert the display name here",
            StartType = ServiceStartMode.Automatic, // Or whatever startup type you want
            Description = "Insert a description for your service here",
            ServiceName = "Insert the service name here"
        };

        Installers.Add(_serviceProcessInstaller);
        Installers.Add(serviceInstaller);
    }

    public override void Commit(IDictionary savedState)
    {
        base.Commit(savedState);

        // This will automatically start your service upon completion of the installation.
        try
        {
            var serviceController = new ServiceController("Insert the service name here");
            serviceController.Start();
        }
        catch
        {
            MessageBox.Show(
                "Insert a message stating that the service couldn't be started, and that the user will have to do it manually");
        }
    }
}

Ensuite, dans l'Explorateur de solutions, faites un clic droit sur le projet de déploiement et sélectionnez "Affichage> Actions personnalisées". Cliquez avec le bouton droit sur Actions personnalisées et sélectionnez "Ajouter une action personnalisée ..." Choisissez le dossier d'application et sélectionnez la sortie principale du projet qui contient le service. Désormais, les actions personnalisées (Commit ci-dessus) seront exécutées lors de l'installation. Vous pouvez ajouter les méthodes supplémentaires (Install, Rollback, Uninstall) si vous avez besoin d'autres actions personnalisées.

4
fre0n
  1. Ouvrez votre ProjectInstaller
  2. Cliquez avec le bouton droit sur ProcessInstaller et choisissez les propriétés
  3. Dans le menu déroulant Compte, sous Divers, sélectionnez le compte sous lequel vous souhaitez que votre service s'exécute

Pour plus de détails sur les différents comptes et leurs privilèges, consultez le lien suivant:

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

3
Adam Cooper