有没有办法使用Win32 C ++ API访问登录/通过受保护的网络共享,列出文件并获取其名称和创建日期? 我不希望samba网络共享存在于我的资源管理器中。 (这可以使用WNetAddConnection2方法完成)。 谢谢大家。
答案 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);
现在请记住,如果您已经使用不同的凭据建立了与服务器的连接,那么我很确定连接会失败