Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Ordner in den Eigenen Dateien systemweit erzeugen/löschen (https://www.delphipraxis.net/75306-ordner-den-eigenen-dateien-systemweit-erzeugen-loeschen.html)

cruso 17. Aug 2006 12:59


Ordner in den Eigenen Dateien systemweit erzeugen/löschen
 
Hi!

So kann man im aktuellen Benutzerkonto einen Ordner unter "Eigene Dateien" erstellen:

Delphi-Quellcode:
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;
Und dann:

Delphi-Quellcode:
//...
CreateDir(GetSpecialFolder(Handle, CSIDL_PERSONAL)+'\Neuer Ordner');
//...
Jetzt meine Frage:
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

shmia 17. Aug 2006 13:35

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);

cruso 17. Aug 2006 13:42

Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
 
Zitat:

Zitat von shmia
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);

Irgendwie verstehe ich das jetzt nicht ganz. Wie kann ich da nun einen Ornder systemweit erzeugen?

Es ist des weiteren auch wichtig, dass jeder Benutzer seinen eigenen Ordner hat und nur seine Daten verändert und nicht die aller Benutzer.

NicoDE 17. Aug 2006 13:46

Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
 
Zitat:

Zitat von cruso
Wie kann man (wenn man Admin ist) einen solchen Ordner systemweit erstellen/löschen? Also immer in den Eigenen Dateien auf allen Benutzerkonten?

Was denn nun?
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...

cruso 17. Aug 2006 13:47

Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
 
Zitat:

Zitat von NicoDE
Zitat:

Zitat von cruso
Wie kann man (wenn man Admin ist) einen solchen Ordner systemweit erstellen/löschen? Also immer in den Eigenen Dateien auf allen Benutzerkonten?

Was denn nun?
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...

Einen Ordner pro User. Jeder User soll einen eigenen Ordner in seinen Eigenen Dateien haben.

NicoDE 17. Aug 2006 13:49

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.

cruso 17. Aug 2006 13:50

Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
 
Zitat:

Zitat von NicoDE
Dann wirst du wohl das jeweilige Benutzerprofil laden, den Ort der jeweiligen "Eigenen Dateien" ermitteln und den Ordner anlegen müssen.

Anders ist das nicht möglich? Schade!

EDatabaseError 17. Aug 2006 13:53

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:

NicoDE 17. Aug 2006 13:53

Re: Ordner in den Eigenen Dateien systemweit erzeugen/lösche
 
Zitat:

Zitat von cruso
Anders ist das nicht möglich?

Wie sonst?
SHGetFolderPath() kann ein Token übergeben werden, dass den Benutzer identifiziert. Um an das Token zu kommen, muss man den Benutzer erstmal anmelden...

Zitat:

Zitat von EDatabaseError
:? wenn man admin ist kommt man da nicht in alle Ordner - auch in die Eigenen Dateien der anderer User, oder :wiejetzt:

Klingt als ob du die Pfade zusammenbauen möchtest - vergiß es, die "Eigenen Dateien" eines jeden Accounts können irgendwo liegen.

shmia 17. Aug 2006 13:58

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.


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