Comment connecter un lecteur réseau à partir de windows service?
Je suis en train de mapper un lecteur réseau de service windows, j'utilise le fichier de commandes pour l'exécution de la commande suivante
NET USE U: \\192.168.55.6\folder password
Lors de l'exécution du fichier de commandes soit le service constructeur ou dans onstart cas, le lecteur n'est pas mappé?
Process process = new Process();
process.StartInfo.FileName = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\MAP.BAT";
process.StartInfo.CreateNoWindow = false;
process.Start();
Comment mapper un lecteur réseau à partir de windows service?
Je ne sais pas pourquoi votre connexion est défaillante, mais pourquoi ne pas faire la cartographie directement à partir de votre code, plutôt que de les bombardements de net.exe? pinvoke.net/default.aspx/mpr/WNetAddConnection2.html vous donnera un code d'erreur qui va vous aider à déboguer.
OriginalL'auteur Ahmed | 2009-04-27
Vous devez vous connecter pour publier un commentaire.
Ceci peut être réalisé à l'aide d'une référence à Windows Script Host Object Model.
Ajouter une référence COM Windows Script Host Object Model qui ajoute une entrée IWshRuntimeLibrary à la section références. Maintenant, vous pouvez utiliser le code suivant pour mapper un lecteur.
vous pouvez utiliser le code suivant pour annuler le mappage ou supprimer le mappage.
J'ai documenté les étapes détaillées ici
OriginalL'auteur Vimal Raj
Tous les problèmes résolus à l'aide de Lecteur de carte Réseau (API) pour mapper un lecteur réseau. J'carte requise des lecteurs pendant OnStart événement de service.
OriginalL'auteur Ahmed
Il pourrait être préférable de simplement appeler le droit de la fonction de l'API, au lieu d'appeler un fichier de commandes pour appeler un autre fichier exécutable. La fonction que vous recherchez est
DefineDosDevice()
OriginalL'auteur MSalters
Il y a deux problèmes:
n'ont pas accès au réseau, ou plus précisément, à l'
ressources nécessaires. Pour résoudre ce problème, vous devez, soit: Donner
l'ordinateur sur lequel le service est en cours d'exécution particulières d'accès à l'
le dossier, ou, configurer le service pour utiliser un réseau (DOMAINE) compte
qui a accès à la ressource.
OriginalL'auteur David L Morris
Vous exécutez le service sous le compte d'utilisateur auquel appartient le mot de passe? Le
MAP USE
commande utilise le courant de l'utilisateur, à moins que vous passiez /UTILISATEUR:anotheruserOriginalL'auteur MSalters
Je pense que les services ne pouvez pas mapper des lecteurs réseau, à moins qu'ils ont le droit de "interagir avec le bureau" ?
Essayez d'exécuter le service sous le compte "Service Réseau", au lieu de "Système Local" ?
Vous pouvez connecter la sortie de la carte de commande? comme: "net use ... > c:\map.log"
Ce n'est pas grave, je pense - réseau mappages ne sont pas gérés par le shell. Ils sont au niveau du noyau des liens. Voir WinObj de SysInternals.
Ma compréhension est que l'utilisateur et le service à utiliser la même liste de correspondances, de sorte que les modifications du service pourrait avoir un impact à l'utilisateur. D'où l'exigence pour "interagir avec le bureau". Mes connaissances ici est un peu daté tho (> 8 ans :D)
aucune erreur ne s'est produite pendant l'exécution de lot.
OriginalL'auteur Andomar
Autant que je sache, un lecteur mappé n'est mappé pour la durée de la session de l'utilisateur. Si votre service windows est en cours d'exécution au démarrage, ou ailleurs n'est pas la partie de session d'un utilisateur, le mappage du lecteur est perdu.
Cela peut ou peut ne pas être vrai, mais il vaut la peine de regarder dans - je me souviens de quelque chose à partir d'un scénario similaire que j'avais environ 7 ans.
OriginalL'auteur Winston Smith