使用WnetGetResource信息从共享名获取本地路径
我正在尝试从共享名获取本地路径。例如,假设SERVER1将C:\FOLDER1共享为“MYSHARE” 客户端计算机将驱动器M:映射到\\SERVER1\MYSHARE。在客户机上,我想检测MYSHARE是否映射到SERVER1上的C:\FOLDER1 我可以使用NetShareGetInfo获取此信息,但现在我尝试使用wnetapi获取此信息,因为NetShareGetInfo需要管理权限 我尝试在指定的示例中使用WnetGetResource信息: 我将lpRemoteName指定为“\\server1\myshare”。调用WNetGetResourceInformation成功,但是,lpLocalName和变量字符串部分lplpSystem都返回NULL使用WnetGetResource信息从共享名获取本地路径,c,windows,winapi,network-programming,C,Windows,Winapi,Network Programming,我正在尝试从共享名获取本地路径。例如,假设SERVER1将C:\FOLDER1共享为“MYSHARE” 客户端计算机将驱动器M:映射到\\SERVER1\MYSHARE。在客户机上,我想检测MYSHARE是否映射到SERVER1上的C:\FOLDER1 我可以使用NetShareGetInfo获取此信息,但现在我尝试使用wnetapi获取此信息,因为NetShareGetInfo需要管理权限 我尝试在指定的示例中使用WnetGetResource信息: 我将lpRemoteName指定为“\\s
#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);
}
}
#包括
#包括
#包括
#pragma注释(lib,“mpr.lib”)
int main(int argc,char*argv[])
{
DWORD sz=sizeof(网络资源);
网络资源nr={0};
LPTSTR ptr=NULL;
LPNETRESOURCE buf=NULL;
德沃德;
nr.dwScope=RESOURCE\u GLOBALNET;//还尝试了其他值
nr.dwType=资源类型\ U盘;
nr.lpRemoteName=argv[1];
buf=malloc(sz);
while((rc=WNetGetResourceInformation(&nr、buf、&sz、&ptr))==ERROR\u MORE\u DATA)
{
buf=realloc(buf,sz);
}
printf(“WNetGetResourceInformation=%d Size=%d\n”,rc,sz);
如果(rc==0)
{
printf(“LocalName={%s}RemoteName={%s}Provider={%s}\n”,buf->lpLocalName,buf->lpRemoteName,buf->lpProvider);
printf(“变量={%s}\n”,ptr);
免费(buf);
}
}
有没有一种方法可以使用wnetapi获取这些信息,我是否使用了正确的方法
谢谢。共享的名称是
\\server1\myshare
,而不是\server1\myshare
(请注意前面的两个反斜杠字符)。这只是上面文章中的一个输入错误。显然,StackOverflow将反斜杠视为转义字符。在我的测试中,它的公式是正确的。我不希望允许非管理员用户远程检索此类信息。。。你试过WMI吗?我也试过作为管理员,结果是一样的。如何使用WMI获取该信息?