Obtenga la ruta CSIDL_LOCAL_APPDATA para cualquier usuario en Windows
-
02-07-2019 - |
Pregunta
¿Hay alguna API Win32 / MFC para obtener el CSIDL_LOCAL_APPDATA
para cualquier usuario que quiero (no solo el usuario que actualmente tiene una sesión iniciada)? Digamos que tengo una lista de usuarios en la forma " dominio \ usuario " y quiero obtener una lista de sus caminos, ¿es posible?
Solución
Puede obtener el SID para el usuario y luego buscarlo en HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList y obtener el valor ProfileImagePath.
Una vez que tenga esta ruta, puede obtener CLSID_LOCAL_APPDATA para su usuario, convertir la ruta absoluta en una ruta relativa a su perfil y luego agregar esa ruta relativa a la otra ruta del perfil del usuario.
Sin embargo, tenga en cuenta que esto se basa en una clave de registro no documentada y puede interrumpirse en futuras versiones del sistema operativo. (O, como diría Raymond Chan: " Ahora que sabes cómo hacerlo, déjame decirte por qué no deberías hacerlo de esta manera ... " :-))
Si tiene un token que representa al usuario, puede usar SHGetFolderPath o SHGetKnownFolderPath (en Vista y superiores). Sin embargo, hay ciertas restricciones de seguridad y debe leer en MSDN para obtener más detalles.
SHGetFolderPath - http://msdn.microsoft.com /en-us/library/bb762181(VS.85).aspx SHGetKnownFolderPath - http://msdn.microsoft.com/en- us / library / bb762188 (VS.85) .aspx