Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Application Data unter Vista - CSIDL_COMMON_APPDATA richtig? (https://www.delphipraxis.net/102146-application-data-unter-vista-csidl_common_appdata-richtig.html)

moelski 24. Okt 2007 08:01


Application Data unter Vista - CSIDL_COMMON_APPDATA richtig?
 
Moin !

Ich versuche gerade unter Vista INI Dateien, welche die Anwendung braucht, an einer Stelle abzulegen, wo alle User Zugriff haben. Dazu habe ich folgendes versucht ... GetSpecialFolder(CSIDL_COMMON_APPDATA) ...

Das ergibt unter Vista c:\ProgramData (zumindest war es bei meinem Kollegen so). Nun stellt sich mir die Frage ob das denn wirklich die richtige Stelle ist. Wie gesagt, Ziel sollte es sein das jeder User auf die Dateien mit Vollzugriff zugreifen kann.

Wenn ich aber nun unter Vista die Dateien nach *CSIDL_COMMON_APPDATA*\AppName\... kopieren lasse und versuche dort eine Datei zu löschen bekomme ich sofort "Zugriff auf den Zielordner wurde verweigert ... Sie müssen diesen Vorgang bestätigen ...". Das wäre auf Dauer für einen User ziemlich nervend ...

Frage also ... Wo lege ich die Daten unter Vista nun am besten ab wenn es mit CSIDL_COMMON_APPDATA scheinbar nicht klappt (oder eben nur mit den Umständen der Bestätigung) ?

OregonGhost 24. Okt 2007 09:30

Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
 
Hmm, hast du ein Vista-Manifest? Da gibt es ja doch diese unangenehme Roaming-Geschichte...
Edit: Andererseits sehe ich gerade, dass offenbar nur der User-bezogene AppData-Ordner Roaming. So gesehen ist vielleicht mein Beitrag hinfällig (weiß nicht, ob das Manifest eventuell trotzdem Abhilfe schaffen kann).

Luckie 24. Okt 2007 09:56

Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
 
Zitat:

Zitat von moelski
Dazu habe ich folgendes versucht ... GetSpecialFolder(CSIDL_COMMON_APPDATA) ...

Das ergibt unter Vista c:\ProgramData

Nein das ist der Ordner in denen Programme gemeinsam genutzte Programmdateien ablegen können, aber nicht der Ordner für Benutzereinstellungen.

Zu erst einmal die Frage, ist es denn sinnvoll, dass die Konfigurationsdatei zentral abgelegt wird? Überschreiben sich da die Nutzer ihre Einstellungen nicht gegenseitig? Wenn es keine Einstellungen gibt, die die Benutzer verändern müssen, dann würd eich es dem Administrator überlassen die Anwendung zu konfigurieren und die Konfigurationsdatei im Anwendungsverzeichnis ablegen. So ist auch sichergestellt, dass die Anwender nichts verstellen können.

Sollen die Anwender denn noch die Anwendung teilweise konfigurieren können, würde ich diese Einstellungen für jeden Benutzer in seinem HOMEDIR ablegen.

moelski 25. Okt 2007 10:19

Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
 
Moin !

Zitat:

Zu erst einmal die Frage, ist es denn sinnvoll, dass die Konfigurationsdatei zentral abgelegt wird?
Naja in gewisser weise schon. Aber wir haben uns nun drauf geeinigt, daswir es doch pro User machen wollen.

Kann mir da jemand sagen welcher Ordner bzw. welche CSIDL sich anbietet?
Gibt es da was, was unter 2k, XP und Vista gleichermassen funktioniert?

Nuclear-Ping 25. Okt 2007 11:09

Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
 
Mit CSIDL_APPDATA bekommst du unter XP und 2K C:\Dokumente und Einstellungen\Benutzer\Anwendungsdaten.
Unter Vista C:\Users\Benutzer\AppData\Roaming.

Den Pfad + Anwendungsname, so mach ichs und es läuft unter beiden Systemen.

moelski 25. Okt 2007 11:23

Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
 
Moin Mario,

nach ein paar ersten Tests kann ich das so bestätigen.
So sollte es gehen.

Unter ME / 98 landet man zwar in einem gemeinsamen Verzeichnis, aber das ist an der Stelle nicht so tragisch. (vor allem was unsere Anwendung angeht).

MCXSC 24. Jun 2009 21:50

Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
 
Ich weiß, der Thread ist alt; aber da er eigentlich genau mein derzeitiges Thema trifft...

Ich habe folgendes Problem: "CSIDL_APPDATA" liefert mir immer "C:\Users\Default\..." zurück, obwohl meine Daten derzeit in "C:\Users\MCXSC\..." liegen. Egal was ich versuche (z.B. CSIDL_LOCAL_APPDATA), ich bekomme immer nur das "Default" zurückgegeben. Jemand eine Idee?

Luckie 24. Jun 2009 21:55

Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
 
Vorweg. ich würde CSIDL_LOCAL_APPDATA nehmen, so lange es sich nicht um Einstellungen handlet, die auch über das Netzwerk verfügbar sein müssen.

Wie sieht denn deine Funktion aus, um den ordner zu ermittlen?

Popov 24. Jun 2009 22:10

Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
 
Ich benutze kein Vista, hab mir das letztens mit den Ordnern aber angeguckt und die Hände über den Kopf geschlagen. Ich hab (noch) keine Ahnung was Microsoft sich das ausgedacht hat. So hat ein Programm das ich installiert habe, seine Programme unter C:\Program Files installiert, das Programm befand sich aber plötzlich unter C:\Programme. Schau ich mir die Eigenschaften an, ist es aber unter C:\Program Files. U. U. hat das seine Richtigkeit.

Teste mal das (brauchst ein Meno und Button auf dem Formular). Sag mir welche Nummer dein Verzeichnis ist ist und ich sag dir welche Konstante es ist.

Delphi-Quellcode:
uses Shlobj;

function SpecialDirectory(ID: Integer): String;
var
  pidl : PItemIDList;
  Path : PChar;
begin
  if SUCCEEDED(SHGetSpecialFolderLocation(0, ID, pidl)) then
  begin
    Path := StrAlloc(max_path);
    SHGetPathFromIDList(pidl, Path);
    Result := String(Path);
    if (Result <> '') and (Result[Length(Result)] <> '\') then Result := Result + '\';
  end
    else Result := #0;

  FreeMem(pidl);
  FreeMem(Path);
end;

procedure GetPaths(st: TStrings);
var
  i: Integer;
  s: String;
begin
  for i := 0 to 100 do
  begin
    s := SpecialDirectory(i);
    if Trim(s) <> '' then
      st.Add(Format('Wert %d = %s', [i, s]));
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetPaths(Memo1.Lines);
end;

Fridolin Walther 24. Jun 2009 22:12

Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
 
Zitat:

Zitat von Luckie
Wie sieht denn deine Funktion aus, um den ordner zu ermittlen?

Die sieht so aus: http://www.delphipraxis.net/internal...t.php?t=160270

Und genau da liegt auch der Fehler. Was meinst Du, lieber MCXSC, was das TOKEN_DEFAULTUSER bedeutet? ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz