获取Windows上任何用户的CSIDL_LOCAL_APPDATA路径
时间:2020-03-06 14:42:21 来源:igfitidea点击:
是否有任何Win32 / MFC API为我想要的任何用户(不仅是当前登录的用户)获取CSIDL_LOCAL_APPDATA
?假设我有一个"域\用户"形式的用户列表,并且我想获取其路径列表吗?
解决方案
我们可以获取用户的SID,然后在HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList下查找它,并获取ProfileImagePath值。
一旦有了该路径,就可以为用户获取CLSID_LOCAL_APPDATA,将绝对路径转换为配置文件的相对路径,然后将该相对路径添加到其他用户配置文件路径。
但是,请记住,这依赖于未公开的注册表项,并且可能会在将来的操作系统版本中破坏。 (或者,正如雷蒙德·陈(Raymond Chan)所说:"现在,我们知道该怎么做了,让我告诉我们为什么不应该这样做……" :-)
如果我们有代表用户的令牌,则可以使用SHGetFolderPath或者SHGetKnownFolderPath(在Vista及更高版本上)。但是,存在某些安全限制,我们应该在MSDN上阅读有关详细信息。
SHGetFolderPath http://msdn.microsoft.com/zh-cn/library/bb762181(VS.85).aspx
SHGetKnownFolderPath http://msdn.microsoft.com/zh-cn/library/bb762188(VS.85).aspx