在 C++ 中,如何检索已安装驱动器的位置?例如,如果我已将驱动器 s: 安装到 c:\temp(在命令行中使用 subst)“subst c:\temp s:”,我如何通过传递“s:”来获取“c:\temp”
我还想知道如何为网络驱动器完成它。(如果 s: 挂载到“\MyComputer\Hello”,那么我想检索“\MyComputer\Hello”,然后从中检索“c:\Hello”)
这可能是一个非常简单的问题,但我找不到有关它的信息。
谢谢,
亚当
如果您使用过 SUBST,您需要的 API 是 QueryDosDevice。您可以使用 DefineDosDevice 自己 SUBST 事物。
要查找已安装网络共享的路径,您必须使用 WNet API:
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;;
}