0

根据微软的说法,这个函数应该检索与本地设备关联的网络资源的名称

我正在使用此 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();

}
4

0 回答 0