none
Windows service et Environment.SpecialFolder.ApplicationData RRS feed

  • Question

  • Bonjour à tous, ma question du jour :

    actuellement je travaille sur un service windows et j'ai besoin de récupérer la valeur de Environment.SpecialFolder.ApplicationData, cependant il me retourne C:\Documents and Settings\LocalService\Application Data\ et non pas C:\Documents and Settings\"nom d'utilisateur"\Application Data\

    Je me suis dis "c'est pas grave on va faire un string.replace("LocalService", SystemInformation.UserName)", mais SystemInformation.UserName me retourne "SYSTEM" et pas mon nom d'utilisateur... Donc impossible d'accéder à %APPDATA%.

    Quelqu'un aurait-il una solucion por favor?

    Merci d'avance!

     

    samedi 29 janvier 2011 16:35

Réponses

  • Bonjour,

    Dans la classe d'installation du service au niveau du constructeur après l'appel à InitializeComponent() mettez :

          this.serviceProcessInstaller1.Account = ServiceAccount.User;
          this.serviceProcessInstaller1.Username = "Login";
          this.serviceProcessInstaller1.Password = "MotPasse";
    

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Marqué comme réponse BreizhNet samedi 29 janvier 2011 20:18
    samedi 29 janvier 2011 20:15
    Modérateur

Toutes les réponses

  • Bonjour,

    C'est normal. Un service tourne sous un compte utilisateur (et pas forcement celui de l'utilisateur actuellement authentifié).
    Pour changer le compte de l'utilisateur sous lequel tourne votre service, allez dans les outils d'administration Windows -> Services. Sélectionnez votre service -> Clic droit -> Propriétés. Allez dans l'onglet Connexion et saisissez le compte utilisateur sous lequel le service doit fonctionner.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    samedi 29 janvier 2011 19:39
    Modérateur
  • Merci pour ta réponse gilles (j'ai acheté ton livre ^^), ce n'est pas possible de le faire "programatiquement" lors de l'installation du service? Ou alors en listant les comptes utilisateurs du pc?
    samedi 29 janvier 2011 19:50
  • Bonjour,

    Dans la classe d'installation du service au niveau du constructeur après l'appel à InitializeComponent() mettez :

          this.serviceProcessInstaller1.Account = ServiceAccount.User;
          this.serviceProcessInstaller1.Username = "Login";
          this.serviceProcessInstaller1.Password = "MotPasse";
    

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Marqué comme réponse BreizhNet samedi 29 janvier 2011 20:18
    samedi 29 janvier 2011 20:15
    Modérateur