![]() |
Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
Hallo,
ich lese mit Hilfe von Luckie's Funktion (aus ![]()
Delphi-Quellcode:
das Anwendungsdaten-Verzeichnis aus.
sAppDataDir := GetShellFolder (CSIDL_APPDATA);
Das klappt wunderbar. Nun möchte ich in diesem Verzeichnis ein Unterverzeichnis für meine Anwendung erstellen.
Delphi-Quellcode:
Aber auf verschiedenen Rechnern wird kein Verzeichnis angelegt. Warum? :gruebel:
ForceDirectories(sAppDataDir + '\MyAPP');
Es kommt keine Schutzverletzung oder Fehlermeldung. In einem (dem neusten) Fall handelt es sich um einen Win2k (SP weiß ich nicht), mit eingeschränkten Benutzer-Account. Das dürfte aber doch egal sein, da das %HOMEDIR% dem Benutzer gehört und er dort machen kann was er will, oder nicht? Oder hat der Benutzer in "Anwendungsdaten" die Rechte nicht mehr? Könnte es an einem fehlenden Service Pack liegen, oder gibs es andere Gründe dafür? Habt ihr Ideen? Gruß gmc |
Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
Hi,
ich kenne jetzt Luckie's Arbeit nicht und habe gerade auch keine Lust sie mir anzuschauen, aber das lässt sich doch alles leicht testen. Am einfachsten mal schauen ob du die Rechte hast, in dem du per Hand (ja das geht) einen Ordner anlegst (oder einfach in die Sicherheitseinstellungen schaust). Das nächste wäre, was liefert dir
Delphi-Quellcode:
genau? Wenn es dir einen Pfad liefert, so hängt hinten schon ein '\' dran, wenn der doppelt ist, wäre es eine einfache Erklärung. Ansonsten empfiehlt sich, einfach mal zu schauen, wie der Pfad aussieht
sAppDataDir := GetShellFolder (CSIDL_APPDATA);
|
Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
evtl nutzt dir folgender code:
Delphi-Quellcode:
HTH Frank
function getVar(name:string):string;
var Value : PChar; begin Value:= StrAlloc(255); GetEnvironmentVariable(PChar(Name), Value, 255); result := StrPas(Value); StrDispose(Value); end; s := getVar('%APPDATA%'); |
Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
Hmm ...
Also GetShellFolder liefert:
Delphi-Quellcode:
Ohne '\' am Ende. Werde aber trotzdem eine Prüfung auf '\' am Ende einbauen. (guter Tipp :wink: )
sAppDataDir = 'C:\Dokumente und Einstellungen\<Benutzer>\Anwendungsdaten'
Somit wäre mein Pfad mit
Delphi-Quellcode:
korrekt.
sAppDataDir + '\MyAPP'
Danke _frank_ für den Code :thumb: , aber das Ermitteln des Verzeichnis funktioniert ja korrekt. Die Rechte kann ich im Moment nicht prüfen, weil das Programm von einem Kollegen drausen bei einem Kunden zum Einsatz gebracht werden sollte. Ich sitze also nicht vor dem Problem-PC und mein Kollege ist inzwischen weiter gezogen. Und alles was ich habe, ist ein Screenshot, wo drauf steht, das eine Datei 'C:\Dokumente und Einstellungen\<Benutzer>\Anwendungsdaten\MyAPP\dum p.dat' nicht geöffnen werden kann. Aber auch hier ist der sAppDataDir korrekt. Aber das 'MyAPP'-Verzeichnis existiert nicht (laut meinem Kollegen) :wall: Klar könnt ich prüfen, ob meine Datei existiert, das hilft mir aber nicht weiter. Das Anwendungsdaten-Verzeichnis auf meinem Entwicklungs-PC (XP-Prof) ist versteckt (schätze das ist normal), und "halb" schreibgeschützt, also kein Haken sondern ein Quadrat drin im Eigenschaften-Dialog. Allerdings stehen alle Berechtigungen im Sicherheitsreiter für alle Benutzer (nicht "Alle Benutzer") auf Vollzugriff. Deshalb frage ich mich, ob eingeschränkte Benutzeraccounts evtl. keinen (Schreib-)Zugriff auf die Anwendungsdaten haben. Vieleicht kommt mir aber auch auf dem Problem-PC eine Sicherheitsrichtlinie der Domain dazwischen. Wäre sowas möglich? ratlose Grüße gmc |
Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
Zitat:
Delphi-Quellcode:
Dann kannst du nichts falsch machen
sAppDataDir = IncludeTrailingPathDelimiter(GetShellFolder (CSIDL_APPDATA))+'MyApp';
|
Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
Im Grunde wäre es auch nicht so schlimm ... wie ich mitbekommen hab, dann irgnoriert ja Windows viele Fehler und mehrere "\" hintereinander machen nichts aus, jedenfalls lief das Programm ohne Probleme.
|
Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
Auf welche Art und Weise legst du das Verzeichnis an (Quelltext)? Eventuell existiert der übergeordnete Ordner nicht so das ForceDirectories bereits hilft.
|
Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
Hi SirThornberry,
ich nutze bereits ForceDirectories, wie du aus meinem ersten Post entnehmen kannst :zwinker: Also für mich ist das ganze Rätsel. :witch: Mein TestCode sieht mittlerweile so aus
Delphi-Quellcode:
nun ratet mal welche Nachricht kommt. :angel2:
sAppDataDir := fktGetShellFolder (CSIDL_APPDATA);
sAppDataDir := IncludeTrailingPathDelimiter (sAppDataDir); sAppDataDir := sAppDataDir + 'MyAPP'; if not (DirectoryExists(sAppDataDir )) then ForceDirectories(sAppDataDir ); if not (DirectoryExists(sAppDataDir )) then ShowMessage('Kein Verzeichnis angelegt'); |
Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
Ich habe deinen Code mal etwas optimiert.
Delphi-Quellcode:
Wichtig ist vorallem eine aussagekräftige Fehlermeldung!!!!
sAppDataDir := IncludeTrailingPathDelimiter(fktGetShellFolder(CSIDL_APPDATA)) + 'MyAPP';
ForceDirectories(sAppDataDir); if not DirectoryExists(sAppDataDir) then ShowMessageFmt('Verzeichnis <%s> konnte nicht angelegt werden!', [sAppDataDir]); Wenn diese Fehlermeldung erscheint, solltest du eine DOS-Box öffnen und folgendes eingeben:
Code:
Sollte dann das Verzeichnis immer noch nicht vorhanden sein, hast du ein Rechteproblem.
C:\> md komplettesverzeichnisausderfehlermeldung
Sollte das Verzeichnis dann vorhanden sein, hat ForceDirectories ein Problem. |
Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
Gibt es nicht zwei ForceDirectories, eins in Windows (oder ShlObj oder was auch immer) und eins in FileCtrl? Das in FileCtrl ist deprecated....
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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