2009-09-24 16 views
3

Parfois, un lecteur réseau est déjà mappé à une lettre de lecteur car «déconnecté». L'utilisation des fonctions Windows normales pour accéder aux fichiers/dossiers de ce lecteur échoue. Dès que l'utilisateur clique manuellement sur ce lecteur dans la boîte de dialogue Windows Explorer, il est réparé comme par magie.Réparer un mappage de lecteur «déconnecté»

Depuis mon programme est un programme de traitement par lots, je voudrais commencer cette « magie » de mon programme (C++) mais je n'ai pas trouvé une fonction Windows pour cela. Il n'y a rien dans les fonctions habituelles WNet ... ...

+0

Vous devriez probablement envisager d'accéder à la ressource via un chemin UNC, par opposition au lecteur mappé. \\ machine \ share \ quelque chose \ somefile.ext contre M: \ something \ somefile.ext – CMB

+0

Mes clients choisissent le chemin. Donc ce n'est pas à moi de décider ... – user178379

Répondre

0

Essayez re-connexion au partage via net use: Si cela ne fonctionne pas

net use \\server\folder [/user:[domain\]username] [password] 

, vous pouvez net use /delete d'abord, puis re relier.

+0

Ça devrait marcher. Sauf si l'utilisateur avait associé un mot de passe avec l'ancienne connexion. Comme mon application ne le sait pas, le mot de passe serait effacé. Mais il semble qu'il n'y ait pas de façon officielle de "réparer" .... – user178379

0

est-ce pas ce que WNetAddConnection et WNetAddConnection2 sont pour?

+0

Non, ils sont pour ajouter de nouvelles connexions (au lieu de réparer un existant). – user178379

0

Je suppose que c'est vraiment la même chose, cependant. Explorer met probablement en cache les informations de connexion quelque part dans le registre. Lorsque l'utilisateur essaie d'accéder à ce lecteur, l'Explorateur voit que le mappage est déconnecté, lit les informations de connexion du registre et recrée la connexion. Peut-être que vous pourriez essayer d'exécuter regmon pendant que vous créez un mappage de lecteur et voir si vous pouvez déterminer où et comment les informations de connexion sont mises en cache.

0

J'ai eu des problèmes avec un de mes clients il n'y a pas longtemps. Je ne sais pas si c'est possible dans votre situation, mais notre solution était de modifier les paramètres réseau du serveur pour arrêter les délais et les déconnexions. Voir MSKB 297684 pour plus de détails.

1
NET USE V: /DELETE 
NET USE V: "\\server1\videos" 

NET USE L: /DELETE 
NET USE L: "\\server2\archive" 
0

Je suis d'accord avec le commentaire de CMB, ci-dessus. J'ai été sur ce chemin (excusez le jeu de mots) dans le passé et cela m'a causé beaucoup de problèmes.

Si le chemin est configurable par l'utilisateur, ils peuvent utiliser m: \ pathonserver ou ils pourraient utiliser \ server \ c \ pathonserver.

Cela ne devrait faire aucune différence pour votre code, l'ouverture d'un fichier comme m: \ blahdeblah.dat ou \ server \ c \ blahdeblah.dat sera identique.

En utilisant le chemin UNC est beaucoup plus fiable, Windows se connecte à nouveau ce chemin automatiquement si oui ou non la lettre mappée est là.

1

Lorsque le chemin est inséré, vous pouvez vérifier pour voir si elle est une ressource réseau et avant l'ouverture de fichiers, utilisez WNetGetConnection() pour obtenir la ressource réseau.

Vous pouvez également essayer d'utiliser WNetRestoreConnectionW(), qui semble avoir un soutien plus fallacieux, selon l'environnement.