dimanche 30 juin 2013

Les tâches WatchDirectory en mode service Windows

FAQ
Voici quelques astuces si vous avez des problèmes pour lancer une tâche WatchDirectory comme un Service Windows.

Assurez-vous que ça marche

En premier lieu, assurez-vous que la tâche fonctionne lorsque vous la démarrez manuellement (Pas comme un Service Windows). Choisissez le mode de lancement à Manuel. Si votre tâche fonctionne bien en mode "Manuel", consultez ci-dessous.

Les répertoires réseau

Si votre tâche fonctionne uniquement avec des répertoires locaux (en général C:\ ou D:\), vous pouvez passer ce paragraphe. Si votre tâche accède à des lecteurs sur d'autres ordinateurs, lisez ci-dessous. 
Le service Windows créé par WatchDirectory se lance avec l'utilisateur "système local".
Notez le mot "local" ! La tâche ne peut pas accéder à une ressource  réseau. Seuls les répertoires de l'ordinateur sur lequel la tâche se lance sont accessibles.  Donc si vous avez une tâche qui surveille ou écrit avec un répertoire réseau,  vous devez modifier l'utilisateur qui lance la tâche avec un qui aura accès à ce répertoire,  consultez le paragraphe  Changer l'Utilisateur (dernier paragraphe de ce post). 
P:\
Vous accédez des lecteurs réseau montés? Veuillez noter que les lecteurs montés (typiquement P:\ ou X:\) sont gérés par windows à l'ouverture de session de l'utilisateur. Donc en fonction des versions de Windows,  ces lecteurs ne sont pas disponibles pour les services, même si vous changez l'utilisateur du service. Utilisez toujours le nommage UNC pour les lecteurs réseau (\\Server\Sharename\Directory au lieu de P:\Directory).

Les permissions des partages réseau

Lorsque vous partagez un répertoire sur le réseau,  les anciens Windows positionnent par défaut un droit de controle total (lecture, écriture,  suppression...) à toute personne qui a accès au partage. Les versions plus récentes positionnent par défaut le doit de lecture seule. Si vos tâches nécessitent d'écrire dans un partage réseau,  veuillez vérifier que l'utilisateur qui lance la tâche bénéficie des bons droits.

Les scripts de commandes batch

Tous les problèmes liés au réseau ci dessus s' appliquent également aux fichiers bat/cmd que vous ecrivez. Veuillez acceder aux lecteurs réseau en utilisant leur nom UNC (\\server\share\directory\file.txt).
CHEMIN d'exécution (PATH)
Veuillez noter que les CHEMINS d'exécution Windows (PATH), où Windows peut trouver les exécutables à lancer, dépendent de l'utilisateur en session (l'utilisateur qui "lance" la tâche WD). Si votre script utiulise des programmes qui doivent être dans votre chemin d'exécution, vous devriez modifier ce chemin d'exécution dans votre script Batch:
SET PATH=C:\My Binaries;%PATH%
Utilisez les chemins complets pour les fichiers
Si vous utilisez des commandes comme
DoIt.exe "%WD_FILE%"
dans votre script, en considérant que DoIt.exe est dans le répertoire courant ou dans votre chemin d'exécution, veuillez le modifier comme suit
"C:\Program Files\Do It Incorporated\DoIt.exe" "%WD_FILE%"
Note: %WD_FILE% contient le chemin complet du fichier détecté, consultez les Variables d'Environnement.
Ne dépendez pas du répertoire de travail
Vous devriez considérer que le répertoire "Courant" (de travail) est inconnu au moment où le script est lancé. Ainsi, si vous avez besoin d'un répertoire spécifique, votre script devrait l'indiquer lui même.

Impression

Tout comme les lecteurs montés, les imprimantes sont présentées par Windows séparément pour chaque compte utilisateur. Veuillez consulter le dernier paragraphe de ce post: Imprimer depuis un service Windows.

Changer l'utilisateur pour un service WatchDirectory

Pour l'instant, vous ne pouvez pas modifier l'utilisateur qui lance le service Windows dans le Centre de Contrôle WatchDirectory. Vous devez le modifier dans le panneau de configuration Windows, avec l'applet "Services Windows":
  • Dans le Centre de Contrôle WatchDirectory, choisissez le menu "Outils -> Services Windows"
  • Ouvrez les paramétrages du service appelé watchDirectory:LeNomdevotreTacheWatchDirectory
  • Modifiez l'utilisateur est le mot de passe du Service
Une version future de WatchDirectory rendra cette modification de l'utilisateur et du mot de passe plus simple, depuis le Centre de Contrôle WD.

Il peut être intégressant de créer un nouvel utilisateur (éventuellement du domaine) appelé WatchDirectory spécifiquement pour vos tâches WD. Un des points importants de cet utilisateur est de laisser son mot de passe à "n'expire jamais". Si vous le créez de façon à ce que le mot de passe expire, vous devrez modifier le mot de passe de TOUTES les tâches WatchDirectory tous les mois...

Aucun commentaire: