2

我有一个小程序,它只是检查指定文件是否位于未映射到计算机上的指定网络驱动器上。
为了检查这一点,我暂时映射到网络位置,检查文件是否存在,然后取消映射驱动器。我现在发现我可以使用空的本地名称调用 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)。

4

1 回答 1

3

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

于 2010-02-19T14:48:51.667 回答