Textdatei speichern und lesen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Dksksm.

    Textdatei speichern und lesen

    Hallo zusammen,

    ich stehe hier mal wieder auf dem Schlauch.

    Ich habe mir ein relativ einfaches Programm geschrieben, dieses Programm speichert eine Textdatei unter c:\Program Files\blablabla\meinProgramm\save.txt
    Das speichern und lesen dieser Datei funktioniert tadellos, aber nur, wenn das Program als Admin ausgeführt wird. Ich möchte aber, dass die Datei immer gespeichert bzw. gelesen wird, unabhängig davon, ob das Programm nun als Admin oder nicht gestartet wird.

    Vermutlich ist es nur eine Kleinigkeit, aber ich komme da einfach nicht drauf.

    Viele Grüße

    die Farbe Rot ist der Moderation vorbehalten und wurde ersetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Ich würd mal behaupten, dass Du einfach einen Ordner nehmen müsstest, der nicht so restriktiv von Windows behandelt wird.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Maltur Program Files ist tabu!
    Nimm ProgramData, da gibt es auch ein GetFolderPath()-Enum für.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo noch mal,

    dank eurer Hilfe konnte ich es nun umschreiben und es funktioniert so, wie ich es mir vorgestellt habe.

    Hier ist mein Code, über Optimierungsvorschläge würde ich mich sehr freuen.

    Quellcode

    1. Sub Save()
    2. Dim SW As StreamWriter
    3. Dim data As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Company", "AppName", "save", "save.txt")
    4. Dim savedirectory As String = "C:\ProgramData\Company\AppName\save"
    5. If Directory.Exists(savedirectory) = False Then My.Computer.FileSystem.CreateDirectory(savedirectory)
    6. SW = My.Computer.FileSystem.OpenTextFileWriter(data, False)
    7. 'Das zu speichernde Zeug....
    8. SW.Close()
    9. End Sub
    Halt stop.

    Das funktioniert leider doch noch nicht richtig ... (Kopf an die Tischkante hauen..)
    Die Datei kann nun im ProgramData erstellt und auch gelesen werden (von allen Benutzern) aber Sie kann nur vom Ersteller (unabhängig, ob Admin oder nicht) bearbeitetwerden. Alle anderen "Benutzer" haben nur lese Rechte, diese müssen aber auch die Datei bearbeiten können.

    Jetzt bin ich doch nicht viel weiter als vorhin. Ich könnte die Rechte manuell anpassen, aber so ist es einfach nicht gedacht. Am besten wäre es, wenn die Datei mit den Rechten schreiben und ändern für den Benutzer "Benutzer" erstellt wird.

    Viele Grüße

    Maltur schrieb:

    Optimierungsvorschläge
    Sieh Dir mal dies an:

    VB.NET-Quellcode

    1. System.IO.File.WriteAllText(DEIN_PFAD, DEIN_STRING)
    2. ' oder
    3. System.IO.File.WriteAllLINES(DEIN_PFAD, DEIN_STRING_ARRAY)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!