Bestimmten Eintrag aus hosts Datei auslesen



  • Hallo!

    Ich möchte gerne die IP zu einem bestimmten Host aus der hosts Datei unter Windows auslesen (sie muss nicht zwingend vorhanden sein) ggf. ändern und wieder zurück in die Datei schreiben.
    Auf Anhieb würde mir nur einfallen die komplette Datei einzulesen, die entsprechenden Zeilen zu suchen, ggf zu ändern und das ganze wieder zurück zu schreiben. Wobei ich auch bei dieser Variante das Problem hätte, dass ich nicht wüsste, wie ich dass Suchen anstellen sollte.

    Da mir aber die komplette Methode nicht so ganz optimal erscheint ist meine Frage an euch, wie ich diese Problemstellung am besten löse.



  • Auslesen kannst du die Datei, indem du dir mit getline aus <string> Zeile für Zeile holst und dann mit einem oder mehreren Leerzeichen als Trennzeichen in IP, Hostname (und evtl. Kommentar) splittest.
    Denk allerdings an die Berechtigungen.



  • Berechtigung ist ein gutes Stichwort...eigentlich dachte ich, das Programm als Administrator auszuführen würde genügen, allerdings bekomme ich bei dem Versuch die Datei zum Lesen und Schreiben zu öffnen nur die Meldung "permission denied". Was kann ich denn noch mehr tun, als das Programm als Admin auszuführen?



  • CarloKater schrieb:

    Berechtigung ist ein gutes Stichwort...eigentlich dachte ich, das Programm als Administrator auszuführen würde genügen, allerdings bekomme ich bei dem Versuch die Datei zum Lesen und Schreiben zu öffnen nur die Meldung "permission denied". Was kann ich denn noch mehr tun, als das Programm als Admin auszuführen?

    Dir die Rechte zukommen lassen auf den Account, mit dem du dich einloggst.



  • Arghs...die Datei war einfach nur schreibgeschützt...war gestern wohl schon zu spät für mich 😉

    Jetzt habe ich aber noch Probleme mit - ich vermute - dem Zeichensatz. Und zwar kommt es vor (z.B. bei manchen Bindestrichen), dass diese Zeichen dazu führen, dass der String an dieser Stelle "abgeschnitten" wird. Das führt dann dazu, dass nicht alle Einträge aus der alten hosts mit in die neue kopiert werden.

    Im Moment verwende ich das Makro A2BSTR um die gelesenen Zeilen für die Verwendung mit meinem CString, den ich dann am Ende wieder in die datei schreibe zu konvertieren. Wie kann ich sicherstellen, dass die Daten trotzdem im ANSI Format und korrekt formatiert wieder geschrieben werden?



  • Habs gelöst bekommen 🙂


Log in to reply