2009-12-10 26 views
1

J'ai utilisé la commande SUBST pour créer un lecteur mappé dans un certain dossier. Dans une application console, je peux accéder au répertoire, alors que je ne peux pas accéder au même répertoire dans une application de service Windows. Autrement dit, la ligne suivante retourne falseApplication SUBST et console par rapport au service Windows

Directory.Exists(@"x:\directory") 

où x: est défini comme suit à l'aide subst:

SUBST x: c:\xdrive 

Comment puis-je accéder aux répertoires mappée dans une subst application de service de fenêtres?

+0

Je crois que vous pouvez avoir une tâche planifiée exécutée en tant que service réseau et appelez la commande subst –

Répondre

3

Subst subsiste dans votre ruche de registre. Le service Windows doit être exécuté en tant que vous pour y accéder. Changez les informations de connexion du service.

Si cela n'est pas possible, vous pouvez créer par programme un lien vers l'emplacement. Comme en appelant System.Process pour exécuter une commande cmd.exe /c subst.

+0

Je crains que mon application ne connaisse pas l'emplacement d'origine du répertoire afin d'exécuter la commande susbst! il ne connaît que d: drive, et il se fiche de l'endroit où il est mappé. Y at-il un moyen de résoudre l'emplacement mappé d'origine d'un lecteur créé par SUB COMMmand? – ala

1

Le problème est que Le lecteur virtuel créé à l'aide de la commande subset n'est visible que par l'utilisateur qui l'a créé. Le service s'exécute en utilisant d'autres privilèges utilisateur, il ne sera donc pas visible par l'application de service.