使用空本地名称调用WNetAddConnection2

时间:2010-02-19 14:22:27

标签: c++ wnet

我有一个小程序,它只检查指定的文件是否位于未映射到计算机上的指定网络驱动器上。
要检查这一点,我暂时映射到网络位置,检查文件是否存在,然后取消映射驱动器。我现在发现我可以使用空的本地名称调用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,因为我没有本地名称。我现在在电脑上有某种僵尸吗?
如何在计算机上查看所有网络连接? Best命令是命令提示符的简短命令(类似于NET USE)。

1 个答案:

答案 0 :(得分:3)

好的,想通了。我可以致电WNetCancelConnection2(nr.lpRemoteName, 0, TRUE);以正确取消映射驱动器。