J'ai un petit programme qui vérifie simplement si un fichier spécifié se trouve sur un lecteur réseau spécifié qui n'est pas mappé sur l'ordinateur.
Pour vérifier cela, je mappe temporairement à l'emplacement réseau, vérifiez si le fichier existe et que démapper le lecteur. J'ai maintenant compris que je peux appeler WNetAddConnection2 avec un nom local vide (MSDN: si la chaîne est vide, ou si lpLocalName est NULL, la fonction établit une connexion à la ressource réseau sans rediriger un périphérique local.).
Juste pour montrer le code:Appel de WNetAddConnection2 avec un nom local vide
NETRESOURCE nr;
nr.dwType = RESOURCETYPE_DISK;
nr.lpLocalName = NULL; // explicitly set this to NULL
nr.lpRemoteName = "\\\\computer\\c$";
nr.lpProvider = NULL;
DWORD dwResult = WNetAddConnection2(&nr, cstrPassword, cstrUsername, FALSE);
if (dwResult != 0)
{
return false;
}
CPath cLocation(cstrFileLocation);
return cLocation.FileExists() != FALSE;
Jusqu'à présent si bon code fonctionne très bien. Mais ce que je veux savoir maintenant est s'il y a un problème avec cet appel de WNetAddConnection2? Je ne peux pas appeler WNetCancelConnection, car je n'ai pas de nom local. Est-ce que j'ai maintenant des zombies sur mon ordinateur?
Comment puis-je voir toutes mes connexions réseau sur mon ordinateur? Le mieux serait une commande courte pour l'invite de commande (quelque chose comme NET USE).
Merci, c'était utile pour moi! – Fred