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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top