在服务中,如何确定特定用户的特殊文件夹路径(例如,“我的文档”)的最佳方法?SHGetFolderPath
允许您传递一个令牌,因此我假设有一种方法可以模拟感兴趣的文件夹所属用户。
是否有一种仅基于用户名就能实现这一点的方法?如果没有,那么需要用户账户的最小信息量是多少?我不想要求用户提供密码。
(这里有一个相关问题。)
在服务中,如何确定特定用户的特殊文件夹路径(例如,“我的文档”)的最佳方法?SHGetFolderPath
允许您传递一个令牌,因此我假设有一种方法可以模拟感兴趣的文件夹所属用户。
是否有一种仅基于用户名就能实现这一点的方法?如果没有,那么需要用户账户的最小信息量是多少?我不想要求用户提供密码。
(这里有一个相关问题。)
http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx
编辑:看起来LogonUser将为您需要的其他用户提供令牌。仅从阅读周围的信息来看,我猜想所讨论的用户必须以某种形式登录才能使此功能正常工作。我记得有一个页面说明在使此功能可用之前必须挂载用户注册表(这似乎是有道理的)。
这些信息存储在注册表中的键"HKEY_USERS\S-1-5-21-616815238-485949776-2992451252-3228\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"。
"S-1-5-21-616815238-485949776-2992451252-3218"是用户的GUID。您需要获取此GUID以查找相应的键并读取它。
在this示例中,他们使用了您提到的SHGetFolderPath函数,并列出了所有可能有用的特殊文件夹列表。
注意:微软不建议使用注册表键,因为它仅用于向后兼容。