Autor |
Beitrag |
sa2728
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 23.02.10 12:31
Hallo,
weiss jemand wie man den Pfad für eigene Dateien eines bestimmten (nicht des eigenen) Users ermitteln kann?
Mit CSIDL_PERSONAL findet man ja nur den Pfad des eigenen Users.
Gruss Andreas Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Di 23.02.2010 um 11:41
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Di 23.02.10 13:19
Auf dem gleichen Rechner? Wofür? Wenn das OS rechtemäßig richtig aufgesetzt ist, kannst Du da weder lesen noch schreiben, mein ich.
_________________ Salus populi suprema lex esto
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 23.02.10 13:37
Moin!
delphi10 hat folgendes geschrieben : | Auf dem gleichen Rechner? Wofür? Wenn das OS rechtemäßig richtig aufgesetzt ist, kannst Du da weder lesen noch schreiben, mein ich. |
Warum sollte das nicht gehen? Wenn dein Programm ein Dienst ist oder Admin-Rechte hat, geht das problemlos.
Aber mir fällt auf anhieb auch nur der Weg über die Registry ein (also User-SID rauspopeln und die Pfad-Ersetzungs-Keys aus der Registry durcharbeiten). Ist aber nicht wirklich gut.  Warten wir mal auf einen Vorschlag von Luckie.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 23.02.10 13:42
Das geht ganz normal über SHGetFolderLocation, nur dass man eben nicht das Token des eigenen Benutzers angibt, sondern das des gewünschten Benutzers. Das muss man sich vorher holen.
|
|
sa2728 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 23.02.10 13:42
Hallo,
ja, auf dem gleichen Rechner. Ich brauche das, weil ich als Admin mir ein kleines Tool schreiben will, mit dem ich die Daten von Usern (inkl. eigene Dateien, Favoriten, Bookmarks, Outlook.pst, ...) von einem PC auf einen anderen kopieren kann.
Gruss Andreas
--- Moderiert von Narses: Beiträge zusammengefasst---
jaenicke hat folgendes geschrieben : | Das geht ganz normal über SHGetFolderLocation, nur dass man eben nicht das Token des eigenen Benutzers angibt, sondern das des gewünschten Benutzers. Das muss man sich vorher holen. |
Und wie geht das genau?
Ich habe momentan folgende Funktion, die gut für den eigenen User funktioniert:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| function GetSpecialFolder(hWindow: HWND; Folder: Integer): String; var pMalloc: IMalloc; pidl: PItemIDList; Path: PChar;
begin if (SHGetMalloc(pMalloc) <> S_OK) then begin MessageBox(hWindow, 'Couldn''t get pointer to IMalloc interface.', 'SHGetMalloc(pMalloc)', 16); Exit; end;
SHGetSpecialFolderLocation(hWindow, Folder, pidl); GetMem(Path, MAX_PATH); SHGetPathFromIDList(pidl, Path); Result := Path; FreeMem(Path);
pMalloc.Free(pidl); end; |
Wie müsste ich die ergänzen, um noch den gewünschten Usernamen mit anzugeben?
Gruss Andreas
Moderiert von Narses: Zitat- durch Delphi-Tags ersetzt
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Di 23.02.10 18:54
_________________ Salus populi suprema lex esto
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 24.02.10 21:19
Such bei der WinAPI mal nach ImpersonateToken oder wie die Funktion hieß. Und damit den eigenen Prozess- oder Thread-Token auf den anderen User biegen. Nicht probiert; reine Vermutung.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
|