【发布时间】:2008-09-25 06:28:11
【问题描述】:
是否有任何 Win32/MFC API 可以为我想要的 any 用户(不仅是当前登录的用户)获取CSIDL_LOCAL_APPDATA?假设我有一个“域\用户”形式的用户列表,我想获取他们的路径列表 - 这可能吗?
【问题讨论】:
标签: winapi visual-c++ mfc shell32
是否有任何 Win32/MFC API 可以为我想要的 any 用户(不仅是当前登录的用户)获取CSIDL_LOCAL_APPDATA?假设我有一个“域\用户”形式的用户列表,我想获取他们的路径列表 - 这可能吗?
【问题讨论】:
标签: winapi visual-c++ mfc shell32
您可以获取用户的 SID,然后在 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 下查找并获取 ProfileImagePath 值。
获得此路径后,您可以为您的用户获取 CLSID_LOCAL_APPDATA,将绝对路径转换为您的配置文件的相对路径,然后将该相对路径附加到其他用户配置文件路径。
但是,请记住,这依赖于未记录的注册表项,并且可能会在操作系统的未来版本中中断。 (或者,正如 Raymond Chan 所说:“既然你知道该怎么做,让我告诉你为什么不应该这样做……”:-))
如果您有代表用户的令牌,您可以使用 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
【讨论】: