我正在尝试从共享名称获取本地路径。例如,假设SERVER1将C:\ FOLDER1共享为“MYSHARE”。
客户端计算机将驱动器M:映射到\\ SERVER1 \ MYSHARE。在客户端计算机上,我想检测到MYSHARE映射到SERVER1上的C:\ FOLDER1。
我可以使用NetShareGetInfo获取此信息,但现在我正在尝试使用WNet API获取信息,因为NetShareGetInfo需要管理权限。
我尝试在指定的here示例中使用WNetGetResourceInformation:
我将lpRemoteName指定为“\\ server1 \ myshare”。对WNetGetResourceInformation的调用是成功的,但是,lpLocalName和变量字符串部分lplpSystem都返回NULL。
#include <Windows.h>
#include <stdio.h>
#include <Winnetwk.h>
#pragma comment(lib, "mpr.lib")
int main(int argc, char *argv[])
{
DWORD sz = sizeof(NETRESOURCE);
NETRESOURCE nr = {0};
LPTSTR ptr = NULL;
LPNETRESOURCE buf = NULL;
DWORD rc;
nr.dwScope = RESOURCE_GLOBALNET; // also tried other values
nr.dwType = RESOURCETYPE_DISK;
nr.lpRemoteName = argv[1];
buf = malloc(sz);
while ((rc = WNetGetResourceInformation(&nr, buf, &sz, &ptr)) == ERROR_MORE_DATA)
{
buf = realloc(buf, sz);
}
printf("WNetGetResourceInformation=%d Size=%d\n", rc, sz);
if (rc == 0)
{
printf("LocalName={%s} RemoteName={%s} Provider={%s}\n", buf->lpLocalName, buf->lpRemoteName, buf->lpProvider);
printf("Variable={%s}\n", ptr);
free(buf);
}
}
有没有办法使用WNet API获取此信息,我使用的是正确的吗?
感谢。