根据微软的说法,这个函数应该检索与本地设备关联的网络资源的名称。
我正在使用此 Microsoft 页面上的代码的改编版本,用 C 编译。但即使驱动器(“J:”和“X:”)映射到我的 PC 上,此函数也不会返回任何一个的共享他们。相反,它会导致 ERROR_NOT_CONNECTED 或 ERROR_CONNECTION_UNAVAIL。
注意:作为双重检查,为了消除我遇到 UAC 或其他一些访问问题的可能性,我在 MS Excel 中使用带有此站点代码的宏调用了 WNetGetConnection(,,)。 它工作得很好。
我的确切 C 代码实现如下。
有任何想法吗?
我使用 ANSI C 改编,在 Windows 7 上构建和运行,(必须包括 mpr.lib)
#include <windows.h>
#include <ansi_c.h>
LPTSTR szDeviceName[260]; //MAX_PATHNAME_LEN
DWORD dwResult, cchBuff = sizeof(szDeviceName);
void main(int argc, char *argv[])
{
// Call the WNetGetConnection function.
dwResult = WNetGetConnection(argv[1],
(LPTSTR) szDeviceName,
&cchBuff);
switch (dwResult)
{
//
// Print the connection name or process errors.
//
case NO_ERROR:
printf("Connection name: %s\n", szDeviceName);
break;
//
// The device is not a redirected device.
//
case ERROR_NOT_CONNECTED:
printf("Device %s is not connected.\n", argv[1]);
break;
//
// The device is not currently connected, but it is a persistent connection.
//
case ERROR_CONNECTION_UNAVAIL:
printf("Connection to %s is unavailable.\n", argv[1]);
break;
//
// Handle the error.
//
default:
printf("WNetGetConnection failed.\n");
}
getchar();
}