Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何获取通过网络驱动器访问的文件的UNC路径?_C++_Visual C++_Mfc_Path_Directory - Fatal编程技术网

C++ 如何获取通过网络驱动器访问的文件的UNC路径?

C++ 如何获取通过网络驱动器访问的文件的UNC路径?,c++,visual-c++,mfc,path,directory,C++,Visual C++,Mfc,Path,Directory,我正在用VC++开发一个应用程序,其中使用网络驱动器访问文件。驱动器由用户手动分配,然后在应用程序中选择驱动器。这导致驱动器不总是映射到相同的服务器 我将如何获得这样一个文件的UNC路径?这主要用于识别目的。建议您使用WNetGetConnection API说明如下:以下是我用来将普通路径转换为UNC路径的函数: wstring ConvertToUNC(wstring sPath) { WCHAR temp; UNIVERSAL_NAME_INFO * puni = NULL

我正在用VC++开发一个应用程序,其中使用网络驱动器访问文件。驱动器由用户手动分配,然后在应用程序中选择驱动器。这导致驱动器不总是映射到相同的服务器


我将如何获得这样一个文件的UNC路径?这主要用于识别目的。

建议您使用WNetGetConnection


API说明如下:

以下是我用来将普通路径转换为UNC路径的函数:

wstring ConvertToUNC(wstring sPath)
{
    WCHAR temp;
    UNIVERSAL_NAME_INFO * puni = NULL;
    DWORD bufsize = 0;
    wstring sRet = sPath;
    //Call WNetGetUniversalName using UNIVERSAL_NAME_INFO_LEVEL option
    if (WNetGetUniversalName(sPath.c_str(),
        UNIVERSAL_NAME_INFO_LEVEL,
        (LPVOID) &temp,
        &bufsize) == ERROR_MORE_DATA)
    {
        // now we have the size required to hold the UNC path
        WCHAR * buf = new WCHAR[bufsize+1];
        puni = (UNIVERSAL_NAME_INFO *)buf;
        if (WNetGetUniversalName(sPath.c_str(),
            UNIVERSAL_NAME_INFO_LEVEL,
            (LPVOID) puni,
            &bufsize) == NO_ERROR)
        {
            sRet = wstring(puni->lpUniversalName);
        }
        delete [] buf;
    }

    return sRet;;
} 

您的意思是,某些用户在服务器上映射了网络驱动器
X:\some\file
\\some server\some\root,您想找出原始服务器的UNC路径,如:
\\some server\\some\root\some\file
?Oui Caron先生,这正是我的意思。请看这里-不幸的是,这个示例使用了.NET,这不是我的情况。@Paradoxyde:该示例使用Win32API,使用.NET语法。您可能可以通过移除编组积垢来实现直接翻译。