【问题标题】:How to rename or relabel a Network Drive label如何重命名或重新标记网络驱动器标签
【发布时间】:2010-12-16 11:41:32
【问题描述】:

我正在使用 WNetAddConnection2 将网络驱动器安装到 Windows,它工作正常,但在默认情况下安装驱动器时,它会将名称分配为 Server IP 和 FolderName ,

'NAS 服务器 (172.24.17.116)'(R:) 上的 NDSTestFolder

我需要使用 SetVolumeLabel 重命名驱动器标签,但由于网络驱动器说参数无效而失败,而 SetVolumeLabel 对本地驱动器工作正常。

有什么方法可以重命名或重新标记网络驱动器?这样我就可以改变了

'NAS 服务器 (172.24.17.116)'(R:) 上的 NDSTestFolder

NDS@MyFolder (R:)

【问题讨论】:

    标签: c++ windows network-drive


    【解决方案1】:

    将您的脚本翻译成 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++ 应用程序的更好解决方案!
    • 感谢提供 C++ 中的解决方案,标记为答案并为此 +1
    【解决方案2】:

    不确定是否有用于此的 API,但字符串存储在注册表中:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2

    通过解析那里的键找到正确的子键(它可能看起来像 "##172.24.17.116#NDSTestFolder" )并将 _LabelFromReg 值更改为您喜欢的任何值...

    【讨论】:

    • 此类注册表项在 XP 和 Vista、Vista 和 7 之间发生了变化,并且可能在其不同的服务包之间发生了变化。这就是无证接口的代价。
    【解决方案3】:

    我尝试使用 vb 脚本重命名 thr 驱动器:

    LPCTSTR szCode = "Function RenameDrive(strNewName,strDriveLetter) \r\n\
                         Dim objShell \r\n\
                         Set objShell = CreateObject(\"Shell.Application\") \r\n\
                         'if objShell is Not Nothing Then \r\n\
                         objShell.NameSpace(strDriveLetter).Self.Name = strNewName \r\n\
                         'End if \r\n\
                         End Function";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 2021-08-28
      • 2010-11-04
      • 2012-11-09
      • 2012-01-27
      • 1970-01-01
      相关资源
      最近更新 更多