Vista-Inidatei-Schreibrechte



  • Hi,
    meine Software liest und schreibt Einstellungen in einer Ini-Datei.
    Es soll für alle Benutzer die selbe sein, also einmal vorhanden. Daher dachte ich, diese unter c:/programData/meineSoftware/ abzulegen.
    Dieses Verzeichnis und die Inidatei wird bei der Installation erfolgreich angelegt. Mittels SHGetFolderPath mit CSIDL_COMMON_APPDATA bekomme ich auch den richtigen Pfad und kann die Inidatei lesen. Leider kann ich sie aber nicht ändern. Meine Software kann sie nicht ändern und selbst wenn ich die Datei manuell mit Notepad öffne und speichern will, kommt die Meldung "Datei kann nicht erstellt werden", trotz Anmeldung als Admin unter Vista. Letztlich sollte sie aber auch für einen User(Benuzter) änderbar sein. Ist das der falsche Ort ? Hab ich einen Denkfehler?



  • Ich vermute, dass die Datei nicht mit Schreibrechten für Benutzer ausgestattet ist.
    Du müsstest Notepad mit einem Rechtsklick als Admin starten und dann die Datei öffnen um auch schreiben zu können.



  • Habe doch geschrieben, das ich als Admin angemeldet bin.
    Mir gehts auch nicht darum, Sie von Hand zu ändern, ist mir nur aufgefallen, dass es nicht geht.
    Mein Programm soll sie lesen und schreiben, bzw. ändern.


  • Mod

    Das verstehe ich nicht.
    Der Pfad ist richtig. Schau doch mal die rechte an, die auf dem Folder liegen.



  • Wenn UAC aktiv ist, müssen das auch Admins so machen.
    Und ich vermute, dass UAC eben auch dieses Problem bei deiner Anwendung "verursacht". Ich würde wetten, dass es funktioniert, wenn die Gruppe Benutzer/Hauptbenutzer (oder wie die heißt) Schreibrechte für diese Datei hat.



  • Wenn ich die Eigenschaften des Ordners ansehe, fällt erst mal auf, das die Checkbox "schreibgeschützt" gefüllt ist (also nicht leer, aber auch kein Häkchen). Wenn ich versuche das zu ändern (leere Checkbox), übernehme ich das für den Ordner und Unterordner, scheinbar werden Änderungen durchgeführt, aber nach erneutem Aufruf der Ordner-Eigenschaften ist die Checkbox wieder gefüllt.

    Unter dem Reiter "Sicherheit" sind folgende Einstellungen:
    Admin: Vollzugriff(ja), Ändern(ja),alles ja ausser das letzte (Spezielle Berechtig.).
    Benutzer: weder Schreiben noch ändern, nur lesen und spezielle Berechtigungen
    Man, ist das verwirrend.

    Wie kann ich die Ini-Datei mit meinem Programm zur Laufzeit erstellen, so dass sie auch von "Benutzer" änderbar ist?



  • @wchristian: Was ist UAC und wo deaktiviere ich das?



  • http://de.wikipedia.org/wiki/User_Account_Control

    Deaktivieren kann man es global in der Systemsteuerung.
    Für einzlne Programme kann man das auch deaktivieren, müsste in den Kompatibilitätseinstellungen der jeweiligen .exe sein, kann das jetzt nicht genau sagen, da ich gerade kein Vista zur Hand habe.
    Besser wäre es aber UAC in deinem Programm zu unterstützen, dein Programm kann dann "erweiterte Rechte" anfordern. Vista fragt den Benutzer dann mit einer Dialogbox, ob dein Programm diese Rechte erhalten soll, oder nicht. Das kennst du bestimmt von anderen Programmen, vor allem Installern.

    Eine andere Möglichkeit wäre die ini-Datei unter C:\Dokumente und Einstellungen\All Users zu erstellen. Ich weiß aber nicht was der "richtige" Weg ist. Allerdings tendiere ich eher zu All Users, weil ich der Meinung bin, dass ein Benutzer mit eingeschränkten Rechten gar nichts im Programmordner rumpfuschen darf.



  • Das Ausschalten von UAC hat tatsächlich alle Probleme gelöst. Vielen, vielen Dank erstmal.
    Wie ist das bei Windows 7 ? Hat sich da was geändert?
    Da die Software auch bei Kunden laufen soll, muss ich wohl wie wchristian schreibt, UAC im Programm unterstützen. Falls irgendwelche Webseiten bekannt sind, die das näher erleutern... her damit.
    Jetzt kann ich auch beruhigt ins Wochenende gehen. Euch auch ein schönes WE.



  • Bei Windows 7 gibt es UAC auch, aber mit einigen Verbesserungen zu Vista.

    Wegen der Implementierung würde ich in der MSDN nachschauen. Es würde mich wundern, wenn das dort nicht genau beschrieben ist, weil Microsoft ja ein Interesse daran haben sollte, dass die Entwickler das so schnell wie möglich in ihren Anwendungen nutzen. Einen Link kann ich dir aber nicht geben.


Anmelden zum Antworten