2010-02-19 3 views
2

У меня есть небольшая программа, которая просто проверяет, находится ли указанный файл на указанном сетевом диске, который не отображается на компьютере.
Чтобы проверить это, я временно отношусь к сетевому местоположению, проверьте, существует ли файл, и чем распакуйте диск. Теперь я понял, что я могу вызвать WNetAddConnection2 с пустым локальным именем (MSDN: если строка пуста или если lpLocalName равно NULL, функция делает подключение к сетевому ресурсу без перенаправления локального устройства.).
Только для отображения кода:Вызов WNetAddConnection2 с пустым локальным именем

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, так как у меня нет локального имени. Так у меня теперь есть какие-то зомби на моем компьютере?
Как я могу увидеть все мои сетевые подключения на моем компьютере? Best будет короткой командой командной строки (что-то вроде NET USE).

ответ

3

Хорошо, понял. Я могу позвонить WNetCancelConnection2(nr.lpRemoteName, 0, TRUE);, чтобы правильно отформатировать диск.

+0

Спасибо, был полезен для меня! – Fred

Смежные вопросы