Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Keine Rechte im %HOMEDIR%/Anwendungsdaten ?? (https://www.delphipraxis.net/70527-keine-rechte-im-homedir-anwendungsdaten.html)

gmc616 31. Mai 2006 14:09


Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
 
Hallo,

ich lese mit Hilfe von Luckie's Funktion (aus %HOMEDIR% - das unbekannte Verzeichnis)
Delphi-Quellcode:
sAppDataDir := GetShellFolder (CSIDL_APPDATA);
das Anwendungsdaten-Verzeichnis aus.
Das klappt wunderbar.
Nun möchte ich in diesem Verzeichnis ein Unterverzeichnis für meine Anwendung erstellen.
Delphi-Quellcode:
ForceDirectories(sAppDataDir + '\MyAPP');
Aber auf verschiedenen Rechnern wird kein Verzeichnis angelegt. Warum? :gruebel:
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

Der_Unwissende 31. Mai 2006 14:13

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:
sAppDataDir := GetShellFolder (CSIDL_APPDATA);
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

_frank_ 31. Mai 2006 15:02

Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
 
evtl nutzt dir folgender code:

Delphi-Quellcode:
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%');
HTH Frank

gmc616 31. Mai 2006 15:25

Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
 
Hmm ...
Also GetShellFolder liefert:
Delphi-Quellcode:
sAppDataDir = 'C:\Dokumente und Einstellungen\<Benutzer>\Anwendungsdaten'
Ohne '\' am Ende. Werde aber trotzdem eine Prüfung auf '\' am Ende einbauen. (guter Tipp :wink: )

Somit wäre mein Pfad mit
Delphi-Quellcode:
sAppDataDir + '\MyAPP'
korrekt.

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

DevilsCamp 31. Mai 2006 15:59

Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
 
Zitat:

Zitat von gmc616
Hmm ...
Also GetShellFolder liefert:
Delphi-Quellcode:
sAppDataDir = 'C:\Dokumente und Einstellungen\<Benutzer>\Anwendungsdaten'
Ohne '\' am Ende. Werde aber trotzdem eine Prüfung auf '\' am Ende einbauen. (guter Tipp :wink: )

Somit wäre mein Pfad mit
Delphi-Quellcode:
sAppDataDir + '\MyAPP'
korrekt.

Danke _frank_ für den Code :thumb: , aber das Ermitteln des Verzeichnis funktioniert ja korrekt.

Mach das lieber mit
Delphi-Quellcode:
sAppDataDir = IncludeTrailingPathDelimiter(GetShellFolder (CSIDL_APPDATA))+'MyApp';
Dann kannst du nichts falsch machen

himitsu 31. Mai 2006 16:34

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.

SirThornberry 31. Mai 2006 17:08

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.

gmc616 31. Mai 2006 17:29

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:
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');
nun ratet mal welche Nachricht kommt. :angel2:

shmia 31. Mai 2006 17:40

Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
 
Ich habe deinen Code mal etwas optimiert.
Delphi-Quellcode:
sAppDataDir := IncludeTrailingPathDelimiter(fktGetShellFolder(CSIDL_APPDATA)) + 'MyAPP';
ForceDirectories(sAppDataDir);
 
if not DirectoryExists(sAppDataDir) then
  ShowMessageFmt('Verzeichnis <%s> konnte nicht angelegt werden!', [sAppDataDir]);
Wichtig ist vorallem eine aussagekräftige Fehlermeldung!!!!
Wenn diese Fehlermeldung erscheint, solltest du eine DOS-Box öffnen
und folgendes eingeben:
Code:
C:\> md komplettesverzeichnisausderfehlermeldung
Sollte dann das Verzeichnis immer noch nicht vorhanden sein, hast du ein Rechteproblem.
Sollte das Verzeichnis dann vorhanden sein, hat ForceDirectories ein Problem.

DGL-luke 31. Mai 2006 18:06

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....

gmc616 1. Jun 2006 10:17

Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
 
So! Das Problem hat sich erledigt. :spin2:

Da beim Kunden das Programm auf 9 von 10 Rechner problemslos funktioniert, haben wir beschlossen, statt noch Tage in die Fehlersuche zu investieren, den Rechner einfach neu aufzusetzen. Und siehe da, keine Proleme mehr. :mrgreen:

k.A. was da schlief lief. Vermutlich hat sich der Sohn vom Chef, seines Zeichens Informatikstudent, rann gesetzt und den Rechner ein bisschen "optimiert". :stupid:
Ich weiß es nicht.

Besten Dank für alle Tipps. :thumb:
gmc

MagicAndre1981 1. Jun 2006 11:46

Re: Keine Rechte im %HOMEDIR%/Anwendungsdaten ??
 
Zitat:

Zitat von gmc616
Vermutlich hat sich der Sohn vom Chef, seines Zeichens Informatikstudent, rann gesetzt und den Rechner ein bisschen "optimiert". :stupid:

:lol: jaja, das lese ich in anderen Foren auch immer. Die fummel da in der Registry und den Diensten rum und nacher wundern sich die DAUs, dass nix mehr geht :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 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