IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Service Windows - repertoire de travail


Sujet :

C#

  1. #1
    Membre éclairé Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Par défaut Service Windows - repertoire de travail
    Bonjour,

    J'ai développé une application console et j'aimerais la passer en service windows. La migration est faite, et l'installation aussi.

    J'ai par contre un problème avec le répertoire de travail qui pointe sur "C:\Windows\System32". J'aimerais le faire pointer sur un autre répertoire pour diverses raisons :

    • Création de fichiers de logs
    • Chargement d'assemblys à la volée
    • ...


    J'ai regardé dans le sens de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.IO.Directory.SetCurrentDirectory
    Ce code marche, mais je ne vois pas comment passer le repertoire en paramètres. En le passant à la main, ça fonctionne, mais si mon service est en mode de démarrage "Automatique", Ca ne marche pas.

    J'ai ensuite regardé s'il est possible de configurer le service pour lui spécifier un repertoire, oui : AppDirectory. Ca ne marche pas. Pas compatible avec XP?

    Quelle solution adopter pour changer le répertoire de travail avec un service en mode de démarrage "Automatique" ?

    Merci d'avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 16
    Par défaut
    J'ai pas tout bien compris (mais c'est normal c'est moi qui manque d'expérience). Alors, si tu veux garder en mémoire un dossier en dehors de ton application, mon prof me donnerait bien la solution d'une variable d'environnement à sauvegarder sur ta machine. Après, je ne sais pas si ça t'aide

  3. #3
    Membre éclairé Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Par défaut
    C'est une bonne idée, je n'y avais pas pensé !

    J'aimerais quand même bien savoir s'il y a moyen de passer des paramètres au main d'un service via la base de registre. Quelqu'un sait ?

    Merci pour ta proposition, je vais certainement l'utiliser !

  4. #4
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par stephane.julien Voir le message
    J'aimerais quand même bien savoir s'il y a moyen de passer des paramètres au main d'un service via la base de registre. Quelqu'un sait ?
    Oui c'est possible mais attention au permission sur la base de reg.

    L'autre moyen est tout simplement le fichier de configuration.

    Citation Envoyé par stephane.julien Voir le message
    Merci pour ta proposition, je vais certainement l'utiliser !
    Bof bof bof, ça complique l'installation pour pas grand chose.

    Sinon tu as regardé du coté de
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Reflection.Assembly.GetExecutingAssembly().Location

  5. #5
    Membre éclairé Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Par défaut
    Voilà le code utilisé dans la méthode OnStart du service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected override void OnStart(string[] args)
        {
          string l_sExecutablePath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
          System.IO.Directory.SetCurrentDirectory(l_sExecutablePath);
     
          ...
        }
    Ca fonctionne. Le problème était que Location retourne le chemin complet, nom de fichier y compris. Il faut donc le substituer.

    Merci dev01 !

  6. #6
    Membre éclairé Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Par défaut
    Citation Envoyé par stephane.julien Voir le message
    J'aimerais quand même bien savoir s'il y a moyen de passer des paramètres au main d'un service via la base de registre. Quelqu'un sait ?
    Le problème est , mais si quelqu'un a la réponse ci-dessus, je suis preneur . Je pense que c'est possible, mais impossible de trouver comment faire.

  7. #7
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par stephane.julien Voir le message
    Le problème est , mais si quelqu'un a la réponse ci-dessus, je suis preneur . Je pense que c'est possible, mais impossible de trouver comment faire.
    Tu as regardé du coté de Win32.Regsitry ?

  8. #8
    Membre éclairé Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Par défaut
    En fait, je pense bien qu'il est possible d'accéder à la base de registre depuis le code, mais ce n'est pas ce que je veux faire. La classe Win32.Registry à tout de même l'air bien.

    J'aimerais configurer mon service pour que les "string[] args" soient remplis par des valeurs. D'après ce que j'ai pu lire, c'est possible, mais je ne sais pas comment. J'ai essayé d'ajouter les paramètres à la clé "ImagePath" (qui spécifie le chemin complet de l'exe du service), mais ça ne marche pas...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Service windows et repertoire sur le reseau
    Par topolino dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/01/2010, 21h26
  2. Planifier le démarrage d'un service Window
    Par tscoops dans le forum Windows XP
    Réponses: 2
    Dernier message: 29/03/2005, 15h56
  3. [WD7.5] Service Windows
    Par cqfd dans le forum WinDev
    Réponses: 1
    Dernier message: 29/03/2005, 09h58
  4. [VB6]Arreter un service windows
    Par bouboussjunior dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/10/2004, 18h03
  5. [C#] Icône, barre des tâches et Service Windows
    Par SErhio dans le forum Windows Forms
    Réponses: 17
    Dernier message: 03/09/2004, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo