如何重命名或重新标记网络驱动器标签 [英] How to rename or relabel a Network Drive label

查看:240
本文介绍了如何重命名或重新标记网络驱动器标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 WNetAddConnection2 这是工作正常,但在加载驱动器默认情况下,它分配名称为服务器IP和文件夹名称

I am mounting a network drive to windows using WNetAddConnection2 which is working fine but while mounting the drive by default it assigns the name as Server IP and FolderName ,


NDSTestFolder on'NAS server(172.24.17.116)'(R:)

NDSTestFolder on 'NAS server (172.24.17.116)'(R:)

我需要使用 SetVolumeLabel 但这对于网络驱动器说无效参数失败,而 SetVolumeLabel 适用于本地驱动器。

I need to rename the drive label using SetVolumeLabel but this fails for the network drive saying invalid parameter while SetVolumeLabel works fine for the local drives.

有没有办法重命名或重新标记网络驱动器?这样我可以更改NAS服务器(172.24.17.116)(R:)上的

Is there a way I can rename or relabel a network drive? So that I can change


NDSTestFolder

NDSTestFolder on 'NAS server (172.24.17.116)'(R:)


NDS @ MyFolder(R:)

NDS@MyFolder (R:)


推荐答案

将脚本翻译成C ++:

Translated your script into 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();
   }
}

这篇关于如何重命名或重新标记网络驱动器标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆