我正在使用VC++编写一个应用程序,其中使用网络驱动器来访问文件。用户手动分配驱动器,然后在应用程序中选择驱动器。这会导致驱动器不总是映射到相同的服务器。
如何获取此类文件的UNC路径?这主要是为了识别目的。
如何获取此类文件的UNC路径?这主要是为了识别目的。
这是我用来将普通路径转换为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;;
}
\\some-server\some\root
上映射了一个网络驱动器X:\some\file
,而你想找出原始服务器的UNC路径,例如:\\some-server\\some\root\some\file
? - André Caron