Ottieni il percorso CSIDL_LOCAL_APPDATA per qualsiasi utente su Windows
-
02-07-2019 - |
Domanda
Esiste un'API Win32 / MFC per ottenere CSIDL_LOCAL_APPDATA
per qualsiasi utente che desidero (non solo quello attualmente connesso)? Supponiamo di avere un elenco di utenti nel formato " dominio \ utente " e voglio ottenere un elenco dei loro percorsi - è possibile?
Soluzione
È possibile ottenere il SID per l'utente e quindi cercarlo in HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList e ottenere il valore ProfileImagePath.
Una volta che hai questo percorso, puoi ottenere CLSID_LOCAL_APPDATA per il tuo utente, convertire il percorso assoluto in un percorso relativo al tuo profilo e quindi aggiungere quel percorso relativo all'altro percorso del profilo utente.
Tuttavia, tieni presente che questo si basa su una chiave di registro non documentata e può rompersi nelle versioni future del sistema operativo. (O, come direbbe Raymond Chan: " Ora che sai come farlo, lascia che ti dica perché non dovresti farlo in questo modo ... " :-))
Se si dispone di un token che rappresenta l'utente, è possibile utilizzare SHGetFolderPath o SHGetKnownFolderPath (su Vista e versioni successive). Tuttavia, ci sono alcune restrizioni di sicurezza e dovresti leggere su MSDN per i dettagli.
SHGetFolderPath - http://msdn.microsoft.com /en-us/library/bb762181(VS.85).aspx SHGetKnownFolderPath - http://msdn.microsoft.com/en- us / library / bb762188 (VS.85) aspx