![]() |
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) ? |
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). |
Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
Zitat:
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. |
Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
Moin !
Zitat:
Kann mir da jemand sagen welcher Ordner bzw. welche CSIDL sich anbietet? Gibt es da was, was unter 2k, XP und Vista gleichermassen funktioniert? |
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. |
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). |
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? |
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? |
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; |
Re: Application Data unter Vista - CSIDL_COMMON_APPDATA rich
Zitat:
![]() 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 02:47 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