如何获取特定用户的Windows"特殊文件夹"的路径?

kgr*_*ffs 10 c++ windows winapi

在服务中,为特定用户确定特殊文件夹路径(例如,"我的文档")的最佳方法是什么?SHGetFolderPath允许您传入令牌,因此我假设有一些方法可以模拟您感兴趣的文件夹的用户.

有没有办法只根据用户名执行此操作?如果没有,用户帐户所需的最小信息量是多少?我宁愿不必要求用户的密码.

(这是一个相关的问题.)

Fre*_*man 12

请不要进入注册表以查找此信息.在将来的Windows版本中,该位置可能会更改.请改用SHGetFolderPath.

http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspx

编辑:看起来LogonUser将为您需要的其他用户提供令牌.


Nic*_*ick 3

我将安装用户的注册表配置单元并查找路径值。是的,出于所有提到的原因(向前兼容性差等),这是一个次优的解决方案。然而,与 Windows 中的许多其他功能一样,MS 没有提供 API 方式来完成您想做的事情,因此它是可用的最佳选择。

您可以使用LookupAccountName获取用户的 SID(而非 GUID)。您可以使用LoadUserProfile加载用户的注册表配置单元,但不幸的是,这还需要用户令牌,这将需要他们的密码。幸运的是,您可以使用RegLoadKey手动将配置单元加载到任意位置,读取数据,然后卸载它(我认为)。

是的,这很痛苦,而且是的,它可能会在未来版本的 Windows 中崩溃。也许到那时微软会提供一个 API 来做到这一点,将其向后移植到旧版本的 Windows 中,并通过 Windows 更新自动分发......但我不会屏住呼吸。

PS 此信息旨在补充您的相关问题中提供的信息,包括免责声明。