我正在使用 WNetAddConnection2 将网络驱动器安装到 Windows工作正常,但在默认情况下安装驱动器时,它将名称分配为 Server IP 和 FolderName ,
NDSTestFolder on 'NAS server (172.24.17.116)'(R:)
我需要使用 SetVolumeLabel 重命名驱动器标签但这对于网络驱动器来说是无效的参数,而 SetVolumeLabel 对于本地驱动器工作正常。
有什么方法可以重命名或重新标记网络驱动器?这样我就可以改变
NDSTestFolder on 'NAS server (172.24.17.116)'(R:)
到
NDS@MyFolder (R:)
最佳答案
将您的脚本翻译成 C++:
#include <shldisp.h>
void RenameDrive(BSTR strNewName, BSTR strDriveLetter)
{
IShellDispatch* pShellDispatch = NULL;
HRESULT hr = CoCreateInstance(CLSID_Shell,
NULL,
CLSCTX_INPROC_SERVER,
IID_IShellDispatch,
(void**)&pShellDispatch);
if (SUCCEEDED(hr) && pShellDispatch)
{
Folder* pFolder = NULL;
VARIANT vt = {};
VariantInit(&vt);
vt.vt = VT_BSTR;
vt.bstrVal = strDriveLetter;
hr = pShellDispatch->NameSpace(vt, &pFolder);
VariantClear(&vt);
if (SUCCEEDED(hr) && pFolder)
{
Folder2* pFolder2 = NULL;
hr = pFolder->QueryInterface(IID_Folder2, (void**)&pFolder2);
if (SUCCEEDED(hr) && pFolder2)
{
FolderItem* pFolderItem = NULL;
hr = pFolder2->get_Self(&pFolderItem);
if (SUCCEEDED(hr) && pFolderItem)
{
pFolderItem->put_Name(strNewName);
pFolderItem->Release();
}
pFolder2->Release();
}
pFolder->Release();
}
pShellDispatch->Release();
}
}
关于c++ - 如何重命名或重新标记网络驱动器标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460390/