获取Windows上任何用户的CSIDL_LOCAL_APPDATA路径

时间:2008-09-25 06:28:11

标签: winapi visual-c++ mfc shell32

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

1 个答案:

答案 0 :(得分:5)

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