![]() |
Windows 8.1 X64 Programmdata Schreibschutz
Hallo,
irgendwie habe ich einen eigenartigen Effekt. Ich besorge mir den Datenpfad für das Programm mit
Delphi-Quellcode:
Pfad := IncludeTrailingPathDelimiter(GetShellFolder(CSIDL_COMMON_APPDATA)) + 'Daten\' + ApplicationName +'\';
Wenn ich in den Ordner schreiben möchte, ist dieser schreibgeschützt. Den Schreibschutz kann ich im Explorer nicht zurücksetzen. Hat wer eine Ideee, was da passiert sein könnte oder wie ich in das Verzeichnis wieder schreiben kann? Gruß Peter |
AW: Windows 8.1 X64 Programmdata Schreibschutz
Also warum du nicht in den Ordner schreiben kannst, kann ich auf die Schnelle nicht erkennen. Evtl. ist der Pfad verkehrt. Prüfe ob er wirklich korrekt ist.
Was den Schreibschutz (Attribut) von den Ordner angeht, so ist das keiner. Das ist kein Schreibschutz. Das war vielleicht mal einer, ist aber schon lange keiner mehr. Inzwischen hat das Schreibschutz Attribut (aber nur bei Ordnern) eine andere Aufgaben (bei Daten ist es aber immer noch Schreibschutz). Du kannst also die ganze Nacht klicken, ohne da etwas zu bewirken. Sei also beruhigt, es ist nicht mit Schreibschutz Attribut versehen. |
AW: Windows 8.1 X64 Programmdata Schreibschutz
Offenbar fehlen Zugriffsrechte. Kann es sein, dass du das Programm als Nutzer ausführst? Dann hast du sehr wahrscheinlich keine Schreibrechte auf das Verzeichnis (analog zu %ProgramFiles% haben dort nur Administratoren Schreibrechte). Hast du denn dafür gesorgt, dass die Rechte auf das Verzeichnis nach deinen Vorstellungen geändert werden?
MfG Dalai |
AW: Windows 8.1 X64 Programmdata Schreibschutz
Beim Versuch z.B. die Inifile zurückzuschreiben kommte die Fehlermeldung
"In c:\Programdata\... kann nicht geschrieben werden. Öffne ich eine vorhandene Datei mit dem Texteditor und möchte diese zurückspeichern, dann kommt die Fehlermeldung "Zugriff verweiget" Ich meine das in Programdata eigentlich immer Schreibrechte vorhanden sein sollten? Gruß Peter |
AW: Windows 8.1 X64 Programmdata Schreibschutz
Nein, die benötigten Schreibrechte für den Ordner setzt du bei der Installation
|
AW: Windows 8.1 X64 Programmdata Schreibschutz
Wie ich schon sagte, das Schreibschutz-Attribut ist es nicht.
Der andere Schreibschutz, über Zugriffsrechte, ist eine andere Sache. In der Regel ist aber bei AppData, bzw. Anwendungsdaten-Ordner der Schreibvorgang möglich. Zumindest wenn es sich um den Anwendungsdaten-Ordner das Users handelt. CSIDL_COMMON_APPDATA ist aber der Anwendungsdaten-Ordner von All-Users, und hie rhat man nicht automatisch Schreibrechte. In der Regel hat man sie eher nicht. Ich hab zwar noch nie bewußt bei der Installation über Rechte entschieden, kann aber stimmen. Wähle die Datei einfach aus, klicke sie mit der rechten Maustaste an, im Kontextmenü wähle Eigenschaften, im Dialogfenster wähle Register "Sicherheit" und prüfe dort ob Benutzer/Gruppe: "Benutzer", evtl. "Ersteller-Besitzer", "Jeder" oder User "Dein Benutzername" die entsprechenden Rechte haben, bzw. ob man sie ändern kann. |
AW: Windows 8.1 X64 Programmdata Schreibschutz
Zitat:
Ich spreche von der Installation der Anwendung, da legt man die Ordner an und stellt auch die erforderlichen Rechte ein. Ist bei den Setup-Generatoren einfach mit ein paar Klicks eingestellt ;) ![]() BTW: Es empfiehlt sich den Ordner nach folgender Vorgabe "{CSIDL_COMMON_APPDATA}\<Organization-Name>\<Application-Name>" zu benennen, und ab dort die weiteren anwendungsspezifischen Ordner anzulegen. "{CSIDL_COMMON_APPDATA}\Daten\<Application-Name>" ist da irgendwie nicht so schön |
AW: Windows 8.1 X64 Programmdata Schreibschutz
Ist es denn überhaupt Absicht, dass du diese Daten für alle Benutzer ablegen willst? Normalerweise braucht das ein Programm gar nicht, normalerweise ist der Ordner CSIDL_LOCAL_APPDATA viel sinnvoller. In dem hat man Schreibrechte und dieser ist nur für den aktuellen lokalen Benutzer, man stört also andere Benutzer auf dem PC auch nicht...
|
AW: Windows 8.1 X64 Programmdata Schreibschutz
Zitat:
Du dagegen meintest wohl die Installationsrountine die der Programmierer erstellt. Hier kann er einstellen ob der Nutzer die Rechte haben wird. |
AW: Windows 8.1 X64 Programmdata Schreibschutz
Wäre doch aber auch sinnlos den Nutzer entscheiden zu lassen welche Rechte wie wo sein müssen, denn jede Entscheidung abweichend vom Standard würde bedeuten, die Installation abzubrechen, weil das Programm sonst nicht laufen wird.
Man lässt den Nutzer ja auch nicht entscheiden, welche Dateien kopiert werden sollen. Der wählt evtl. eine Funktion aus und die impliziert dann welche Dateien kopiert, welche Ordner benötigt und welche Rechte dort sein müssen damit die Anwendung funktioniert. |
AW: Windows 8.1 X64 Programmdata Schreibschutz
Das Programm ist eine Altlast und schon eine ganze Weile im Einsatz.
Der Fehler scheint bei mir erst seit W 8.1 aufzutreten. Historisch bedingt, werden die Daten nicht in einer Datenbank, sondern in IniFiles abgelegt. Ich verschiebe jetzt dieses Verzeichnis nach CSIDL_LOCAL_APPDATA und hoffe, das keiner im Netzwerk darauf zugreifen will. In der Regel werden die Inifiles an einer Stelle erzeugt und von Clients nur ausgelesen. Nachtrag: Pfad := IncludeTrailingPathDelimiter(GetShellFolder(CSIDL_ COMMON_APPDATA)) + 'Daten\' + ApplicationName +'\'; 'Daten\' habe ich nur hier ersetzt. Tatsächlich ist es bei mir der Firmenname des Herstellers. Peter |
AW: Windows 8.1 X64 Programmdata Schreibschutz
Noch ein Hinweis zu CSIDL_LOCAL_APPDATA vs. CSIDL_APPDATA: Letzteres Verzeichnis ist vorzuziehen, wenn die Einstellungen im Nutzerprofil liegen sollen und in einer Domäne mit servergespeicherten Profilen mit auf den Server übertragen werden sollen, d.h. die dort gespeicherten Dateien sind an jedem PC der Domäne für diesen Nutzer verfügbar. CSIDL_LOCAL_APPDATA verweist auf ein Verzeichnis, das nicht auf den Server synchronisiert wird, d.h. die dort gespeicherten Dateien sind nur auf diesem einen PC.
Was ich damit sagen will: CSIDL_LOCAL_APPDATA sollte man wirklich nur bei Notwendigkeit (große Dateien/Datenbanken oder so) und dann bewusst benutzen. CSIDL_APPDATA ist eigentlich immer besser, weil man es Administratoren in Domänen sonst unnötig schwer macht. MfG Dalai |
AW: Windows 8.1 X64 Programmdata Schreibschutz
Generell könnte man auch sagen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz