How to rename or relabel a Network Drive label

前端 未结 3 483
-上瘾入骨i
-上瘾入骨i 2020-12-20 07:20

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 FolderNa

3条回答
  •  不思量自难忘°
    2020-12-20 08:14

    Translated your script into C++:

    #include 
    
    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();
       }
    }
    

提交回复
热议问题