2008-09-25 5 views
2

Есть ли какой-либо Win32/MFC API для получения CSIDL_LOCAL_APPDATA для любого пользователя, которого я хочу (не только в настоящее время вошел в систему)? Скажем, у меня есть список пользователей в форме «domain \ user», и я хочу получить список их путей - это возможно?Получить путь CSIDL_LOCAL_APPDATA для любого пользователя в Windows

ответ

4

Вы можете получить SID для пользователя, а затем просмотреть его под HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList и получить значение ProfileImagePath.

Как только у вас есть этот путь, вы можете получить CLSID_LOCAL_APPDATA для своего пользователя, преобразовать абсолютный путь в относительный путь к вашему профилю, а затем добавить этот относительный путь к другому пути профиля пользователя.

Однако имейте в виду, что это зависит от недокументированного раздела реестра и может быть поврежден в будущих версиях ОС. (Или, как сказал Раймонд Чен: «Теперь, когда вы знаете, как это сделать, позвольте мне рассказать вам, почему вы не должны так поступать ...» :-))

Если у вас есть маркер, представляющий пользователь, вы можете использовать SHGetFolderPath или SHGetKnownFolderPath (на Vista и выше). Тем не менее, существуют определенные ограничения безопасности, и вы должны прочитать их в MSDN.

SHGetFolderPath - http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx SHGetKnownFolderPath - http://msdn.microsoft.com/en-us/library/bb762188(VS.85).aspx

+0

Спасибо - я попробую это. – dennisV 2008-09-25 06:36:46

 Смежные вопросы

  • Нет связанных вопросов^_^