2009-03-25 7 views
1

Je suis en train de coder un programme pour surveiller un répertoire distant, et j'utilise l'API Windows: WNetAddConnection. Je l'utilise pour mapper le répertoire distant sur Z: en utilisant un utilisateur/mot de passe spécifié.comment déconnecter un répertoire distant Windows?

Après avoir mis ce programme pour l'environnement de travail, quelqu'un Usage de l'explorateur « \ 192.168.XX \ somedir » pour se connecter le même répertoire que je surveillais, et il rend mon programme ne peut pas se connecter à ce répertoire, donc je Je dois demander à ce peuple de ne pas faire cela, mais je ne peux pas les forcer à ne pas le faire.

Je veux savoir s'il y a un moyen de déconnecter tous les autres connexion, ou PROVENT leur font cette chose, ne quelqu'un sait comment?

Soit dit en passant, je ne suis pas un expert dans les fenêtres, Je ne connais pas le détail de réseau Windows (ou ce que ce bug signifie vraiment), quelqu'un peut me dire où est la documentation pour le réseau Windows?

+0

Je ne sais pas pourquoi, quand les gens utilisent l'explorateur et de mettre l'emplacement: « \ 192.168.XX \ somedir » et utilisateur leur utilisateur/pwd, mon programme ne parviendra pas à se connecter le même répertoire partagé .. – linjunhalida

+0

C'est une limitation de Microsoft. Un client Windows accédant à des partages sur un serveur Windows doit utiliser le même nom d'utilisateur et le même mot de passe pour tous les partages auxquels il accède. –

Répondre

1

Option truand:

Vous pouvez analyser la sortie de "net use" puis déconnecter les connexions que vous n'aimez pas utiliser "net use/d"

(WNetCancelConnection2 semble être l'API net use/d utilise)

1
WNetCancelConnection2 

Mais ce n'est pas la chose la plus amicale à faire aux gens.

+0

nous développons un programme utilisé uniquement dans notre usine, et les utilisateurs sont des travailleurs ... – linjunhalida

0

Vous ne savez pas à propos de l'API mais net session/delete déconnectera toute session ouverte à un partage.

0

vous pouvez le faire suivre l'étape: 1, exécutez l'ordre de supprimer tous les utilisateurs net et le passwd, l'ordre est: rundll32.exe shell32.dll, Control_RunDLL keymgr.dll 2, supprimer toutes les informations de l'utilisateur net dans la mémoire utiliser le ord er: net use * /delete /y ou vous pouvez créer un fichier bat petit morceau les informations suivantes:

@echo off 
rundll32.exe shell32.dll,Control_RunDLL keymgr.dll 
net use * /delete /y 
net use * /delete /y 
net use * /delete /y 
net use * /delete /y 
net use * /delete /y 
net use * /delete /y 

net use 
net use 
net use 

net use * /delete /y 
net use * /delete /y 
net use * /delete /y 
net use * /delete /y 
net use * /delete /y 
net use * /delete /y 
Questions connexes