4

是否有任何 Win32/MFC API 来获取我想要CSIDL_LOCAL_APPDATA任何用户(不仅是当前登录的用户)?假设我有一个“域\用户”形式的用户列表,我想获得他们的路径列表 - 这可能吗?

4

1 回答 1

6

您可以获取用户的 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

于 2008-09-25T06:35:08.927 回答