Netzlaufwerk verbinden mit ConnectNetworkDrive



  • Ich würde gerne ein Netzlaufwerk über meine Anwendung verbinden.
    Dabei bin ich schon auf ConnectNetworkDrive gestoßen, wessen
    Verwendung mir aber noch erheblich Probleme bereitet.

    DWORD CnetzlfwverbindenDlg::ConnectNetworkDrive(CString slNetPath, char clDrive, bool blPermanent)
    {
     char cPath[3] = { char(0), ':', char(0) };
      cPath[0] = toupper(clDrive);
      CString slRemotePath = slNetPath;
    
      NETRESOURCE nr;
      ZeroMemory(&nr, sizeof(nr));
    
      nr.dwScope= RESOURCE_GLOBALNET;
      nr.dwType = RESOURCETYPE_DISK;
      nr.dwDisplayType=RESOURCEDISPLAYTYPE_GENERIC;
      nr.dwUsage=RESOURCEUSAGE_CONNECTABLE;
      nr.lpLocalName=cPath;
      nr.lpRemoteName=slRemotePath.c_str();
      nr.lpComment=NULL;
      nr.lpProvider=NULL;
      int ilResult = WNetAddConnection2(&nr, (LPSTR) NULL, (LPSTR) NULL,blPermanent ? CONNECT_UPDATE_PROFILE : 0);
      return ilResult;
    
    }
    

    Hier wird als Laufwerkbuchstabe ein char benötigt. Warum geht das nicht
    mit einem normalen CString ? Gebe ich beim Aufruf "Z" als Laufwerk mit
    erhalte ich den Fehler "const char[2] kann nicht in char konvertiert werden".
    Wie gebe ich denn das "Z" so an, dass es verarbeitet werden kann ?



  • 'Z' ? 🙂



  • Danke so geht es :-))

    Bleibt nur noch die Frage, wie ich CString slRemotePath = slNetPath;
    richtig zuweise. Denn hier besteht der Konflikt mit dieser Zeile:

    nr.lpRemoteName=slRemotePath.c_str();

    error C2039: 'c_str': Ist kein Element von 'ATL::CStringT<BaseType,StringTraits>'
    with
    [
    BaseType=char,
    StringTraits=StrTraitMFC<char>
    ]

    Hier wird doch auch nur in einen string kopiert oder ?
    Was macht das für einen Sinn, da es doch schon ein CString ist ?
    Wird also doch ein char erwartet ? 😕

    Warum finde ich eigentlich keine Infos zu ConnectNetworkDrive in
    meiner mit installierten MSDN ? 😕 Ich muss noch eine Menge
    Grundlagen büffeln wie ich sehe ...



  • c_str() geht nur bei std::string. Unter MFC heißt es glaub ich GetBuffer().



  • Vielen Dank :-)) 👍 💡


Anmelden zum Antworten