c++ - 如何重命名或重新标记网络驱动器标签

标签 c++ windows network-drive

我正在使用 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/

相关文章:

c++ - 在类中初始化 ofstream

windows - 在 Windows Azure (VM) 上托管 dns 名称服务器

delphi - 为什么我的程序无法识别映射的 UNC 路径?

c++ - 尝试通过 tcp 发送 vector

c++ - 使用 const 限定符将参数传递给模板函数时出错

c++ - C/C++ 编译器对运算符优先级/求值有多严格?

c++ - MinGW 和 std::thread

c++ - Windows 中的 wxwidgets 错误

c# - 在网络共享驱动器上复制文件

linux - 从Docker容器访问网络驱动器