使用Win32 C ++访问受保护的网络共享

时间:2014-04-24 14:10:30

标签: c++ windows winapi

有没有办法使用Win32 C ++ API访问登录/通过受保护的网络共享,列出文件并获取其名称和创建日期? 我不希望samba网络共享存在于我的资源管理器中。 (这可以使用WNetAddConnection2方法完成)。 谢谢大家。

1 个答案:

答案 0 :(得分:3)

虽然我同意Ben在评论中提出的异议,但你可以继续使用WNetAddConnection2。为NULL参数传入lpLocalName值时,它不会映射驱动器,而只会执行授权,因此允许您使用完整的UNC路径执行任务例如枚举远程系统上的文件。

  

lpLocalName :指向以空字符结尾的字符串的指针,指定要重定向的本地设备的名称,例如" F:"或" LPT1"。字符串以不区分大小写的方式处理。   如果字符串为空或者lpLocalName为NULL,则该函数将连接到网络资源,而不重定向本地设备。

MSDN页面几乎可以使用它,但类似于(我没有手头有一个Windows框来验证这些代码是否有效):

NETRESOURCE resource;
resource.dwType = RESOURCETYPE_DISK;
resource.lpLocalName = 0;
resource.lpRemoteName = L"\\\\server\\share";
resource.lpProvider = 0;
DWORD conResult;
DWORD result = WNetAddConnection2(&resource, L"password", L"username", CONNECT_TEMPORARY);
if (result == NO_ERROR) {
    // Go hog wild with files in \\server\share
}

要完成使用它,请执行以下操作:

DWORD retval = WNetCancelConnection2(L"\\\\server\\share", 0, TRUE);

现在请记住,如果您已经使用不同的凭据建立了与服务器的连接,那么我很确定连接会失败