Comment accéder à un répertoire mappé à partir d'un service Windows

5

En règle générale, les services Windows ne peuvent pas accéder aux lecteurs mappés et vous devez utiliser des chemins UNC.

Je suis convaincu qu'il existe un moyen de contourner ce problème pour qu'un service Windows puisse accéder à un lecteur mappé, mais je ne le trouve nulle part.

Mon cas spécifique est que j'exécute Tomcat7 sur un serveur Windows 2008.

Edd
la source
Ce n'est pas quelque chose que j'ai déjà fait mais je suis sûr d'avoir vu que cela pouvait être fait
Edd

Réponses:

12

Une alternative à l'utilisation de répertoires mappés ou de chemins UNC consiste à utiliser des liens symboliques.

Les liens symboliques NTFS (liens symboliques) peuvent faire référence à un chemin UNC mais diffèrent des raccourcis en ce qu’il n’existe aucune redirection vers l’emplacement demandé. Si vous créez un lien symbolique comme suit:

mklink /D C:\myLink \\127.0.0.1\c$

... puis quand vous ouvrez C:\myLinkl'adresse du dossier que vous êtes en serez C:\myLinket non \\127.0.0.1\c$, ce qui est ce que vous obtenez si myLink était un raccourci et non un lien symbolique. Cela est important si votre application a des problèmes de compatibilité avec les chemins UNC.

De plus, le lien symbolique existe dans le système de fichiers et il n'est pas nécessaire de le recréer après l'ouverture de session, comme le requiert votre lecteur mappé moyen (généralement automatisé); il est donc disponible pour les services Windows.

Edd
la source
3
Petite info de mon expérience, la commande ne fonctionne que dans l'invite de commande Windows et pas dans Power Shell
Muffun
C'est sauvage .... et très utile.
Marki le
1

J'ai trouvé une solution à ce problème qui semble fonctionner correctement: https://stackoverflow.com/a/7867064/669645

Étapes que j'ai prises:

  1. Créer un fichier bat contenant la commande net use z: \servername\sharedfolder /persistent:yes
  2. Créer une tâche planifiée
    • Définir l'utilisateur comme "Système"
    • Ajouter une action pour exécuter le fichier bat
  3. Exécuter manuellement la tâche (pas besoin de définir une planification)

Remarque: le lecteur apparaîtra comme " Lecteur réseau déconnecté (Z :) " mais restera accessible à tous les utilisateurs connectés ainsi qu'aux services Windows.

Edd
la source
Cela ne fonctionne pas réellement pour moi car le lecteur mappé ne persiste pas après un redémarrage (très bien sous Windows 7 mais pas Windows Server 2008). Si je planifie l'exécution de la tâche au démarrage, je ne vois toujours pas le lecteur mappé
Edd