У меня есть небольшая программа, которая просто проверяет, находится ли указанный файл на указанном сетевом диске, который не сопоставлен с компьютером.
Чтобы проверить это, я временно сопоставляюсь с сетевым местоположением, проверяю, существует ли файл, и затем отключаю диск. Теперь я понял, что могу вызвать WNetAddConnection2 с пустым локальным именем (MSDN: если строка пуста или lpLocalName имеет значение NULL, функция устанавливает соединение с сетевым ресурсом без перенаправления локального устройства.)
Только для показа кода:
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;
Пока все хорошо, код работает нормально. Но теперь я хочу знать, есть ли проблема с этим вызовом WNetAddConnection2? Я не могу позвонить WNetCancelConnection, так как у меня нет локального имени. Так есть ли у меня какие-то зомби на моем компьютере сейчас?
Как я могу увидеть все мои сетевые подключения на моем компьютере? Лучше всего будет короткая команда для командной строки (что-то вроде NET USE).