Netzlaufwerk mit system() verbinden



  • Moin Leute!

    Ich probiere gerade mit dem system() Befehl (ja ich weiß, sollte man nicht nutzen -> teste ja nur mal was) ein Netzlaufwerk zu verbinden.

    system("net use z: \\192.168.178.21\freigabe");
    

    Das funktioniert aber nicht, es kommt immmer die Meldung:

    Sytememfehler 67 aufgetreten
    
    Der Netzwerkname wurde nicht gefunden
    

    In der Konsole funktioniert es einwandfrei, wenn ich net use nutzen will....

    Hat jemand ne Idee, woran das liegen könnte?

    System:

    Windows XP Home, SP2
    Netzwerkkonfiguration über DHCP
    Visual C++ Net 2003

    Gruß Ivo



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Sorry. Voreilig verschoben.

    Versuch mal die Backslashes zu escapen:

    system("net use z: \\\\192.168.178.21\\freigabe");
    


  • Danke es geht 😉

    Ich hatte es die ganze Zeit so versucht:

    system("net use z: \\\192.168.178.21\freigabe");
    

    Naja hätt ich noch mal einen Backslash mehr gemacht 😉

    So ist es besser und läuft auch auf anderen Rechnern:

    system("net use z: \\\\127.0.0.1\\freigabe");
    

    Gruß Ivo

    EDIT:

    Geht es auch das ich anstatt der IP-Adresse eine Variable einfüge?



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ja, natürlich. Du kannst system einfach einen string übergeben. Den musst du dir dann natürlich vorher zurecht basteln. Siehe stringstream oä.



  • kingruedi schrieb:

    Ja, natürlich. Du kannst system einfach einen string übergeben. Den musst du dir dann natürlich vorher zurecht basteln. Siehe stringstream oä.

    std::string oder C-String?



  • Lars Hupel schrieb:

    kingruedi schrieb:

    Ja, natürlich. Du kannst system einfach einen string übergeben. Den musst du dir dann natürlich vorher zurecht basteln. Siehe stringstream oä.

    std::string oder C-String?

    War die Frage ernstgemeint?
    Wenn ja: system erwartet einen c-string.

    Caipi



  • ja, die war tatsächlich ernst gemeint. die aussage "string" ist für mich mehrdeutig. es hätte ja irgendein string sein können...

    ich kenne natürlich system() aus der C-standardbibliothek. aber hätte es nicht sein können ( ➡ neues sprachmittel in C++: überladung), dass diese in der C++-bibliothek so deklariert wurde:

    void system(const char* befehl);
    void system(std::string befehl);
    


  • Wenn schon dann wenigstens

    void system(const string&)
    

    😉

    Allerdings du hättest das auch in einer Referenz nachschlagen können. Zum Beispiel http://cppreference.com



  • So hab ich´s nun gemacht 😉

    std::string ip = "127.0.0.1"; 
    system(std::string(std::string("ping") + ip).c_str());
    

    So wird der string ip an system() übergeben, aber eben zum pingen, nun.
    Mit dat_ein kann ich nun eine Liste pingen und Netzlaufwerke verbinden.

    Gruß Ivo



  • 1. Kann man das noch etwas Abkürzen
    2. Fehlt dir ein Leerzeichen nach Ping 🙂

    system((std::string("ping")+ip).c_str()); // op+ liefert wieder std::string und es benötigt keines weiteren Konstruktor-Aufrufs
    

    MfG SideWinder



  • SideWinder schrieb:

    2. Fehlt dir ein Leerzeichen nach Ping 🙂

    system((std::string("ping")+ip).c_str()); // op+ liefert wieder std::string und es benötigt keines weiteren Konstruktor-Aufrufs
    

    MfG SideWinder

    dann verbesser es doch wenigstens 🙂

    system((std::string("ping ")+ip).c_str());
    

Log in to reply