![]() |
Ordner in den Eigenen Dateien systemweit erzeugen/löschen
Hi!
So kann man im aktuellen Benutzerkonto einen Ordner unter "Eigene Dateien" erstellen:
Delphi-Quellcode:
Und dann:
function GetSpecialFolder(hWindow: HWND; Folder: Integer): String;
var pMalloc: IMalloc; pidl: PItemIDList; Path: PChar; begin // get IMalloc interface pointer if (SHGetMalloc(pMalloc) <> S_OK) then begin MessageBox(hWindow, 'Couldn''t get pointer to IMalloc interface.', 'SHGetMalloc(pMalloc)', 16); Exit; end; // retrieve path SHGetSpecialFolderLocation(hWindow, Folder, pidl); GetMem(Path, MAX_PATH); SHGetPathFromIDList(pidl, Path); Result := Path; FreeMem(Path); // free memory allocated by SHGetSpecialFolderLocation pMalloc.Free(pidl); end;
Delphi-Quellcode:
Jetzt meine Frage:
//...
CreateDir(GetSpecialFolder(Handle, CSIDL_PERSONAL)+'\Neuer Ordner'); //... Wie kann man (wenn man Admin ist) einen solchen Ordner systemweit erstellen/löschen? Also immer in den Eigenen Dateien auf allen Benutzerkonten? MfG Cruso |
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Ich würde dies im Ordner C:\Documents and Settings\All Users ablegen.
Um dieses Verzeichnis zu bekommen
Delphi-Quellcode:
s :=GetSpecialFolder(Handle, CSIDL_COMMON_DOCUMENTS);
//Unterverzeichnis \Documents abtrennen s := ExtractFilePath(s); |
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Zitat:
Es ist des weiteren auch wichtig, dass jeder Benutzer seinen eigenen Ordner hat und nur seine Daten verändert und nicht die aller Benutzer. |
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Zitat:
Einen Ordner, oder jeweils ein Ordner pro User? Und was machst du, wenn die "Eigenen Dateien" auf einem Netzlaufwerk liegen bzw. auf dem Domänenserver... |
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Zitat:
|
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Dann wirst du wohl das jeweilige Benutzerprofil laden, den Ort der jeweiligen "Eigenen Dateien" ermitteln und den Ordner anlegen müssen.
|
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Zitat:
|
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
:? wenn man admin ist kommt man da nicht in alle Ordner - auch in die Eigenen Dateien der anderer User, oder :wiejetzt:
|
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Zitat:
SHGetFolderPath() kann ein Token übergeben werden, dass den Benutzer identifiziert. Um an das Token zu kommen, muss man den Benutzer erstmal anmelden... Zitat:
|
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Es gibt da noch den Ordner "Default User".
Vermutung: Wenn man einen neuen User anlegt und sich dann anmeldet, wird alles aus "Default User" ins aktuelle Userverzeichnis kopiert. |
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Die gespeicherten Daten werden bei meinem Programm werden in einem Ordner in den Eigenen Dateien abgespeichert, damit jeder seinen eigenen Skin usw hat. Nun wird dieser Ordner zwar auch beim Start des Hauptprogramms erstellt, wenn er nicht existiert allerdings dachte ich, wenn ich das direkt nach der Installation systemweit mache, dann wäre das schöner.
|
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
@cruso: sowas macht man in %AppData%. weiss nicht, welchen wert für SHGetFolder man da braucht.
Und deinen Ansatz halte ich für komplett sinnlos - wenn z.B. der Benutzer X dein Programm nie benutzt, für was braucht er dann den ordner? |
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Zitat:
|
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Prüf doch beim Programmstart einfach, ob dein Ordner schon existiert (sprich: Hat der Benutzer das Programm bereits gestartet?) und falls nein, erstelle ihn.
So kommst du mit deinem Code aus, hast keine Probleme und darüber hinaus hinterlässt du nur Daten bei Benutzern, die das Programm auch verwenden. Und wenn nach der Installation noch Benutzer dazukommen, gibts auch keine Probleme. |
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Zitat:
Das habe ich sowieso integriert! Nur wenn das Programm deinstalliert wird, dann ist der "Müll" immernoch da! |
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Zitat:
|
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Zitat:
|
Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
Naja auch viele käufliche Programme hinterlassen ihre Daten auch nach der Deinstallation in den Eigenen Dateien.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 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