我的软件仍然需要支持Windows XP。在其中,我从Windows服务调用SHGetKnownFolderPath API,以通过hToken
获取用户特定的路径(如FOLDERID_Desktop
)。由于API在XP上不受支持,我很好奇是否有其他方法可以在该操作系统上做到这一点?
要使用的正确函数是SHGetFolderLocation,传递NULL
或-1
作为访问令牌:
hToken[in]
类型:HANDLE
可用于表示特定用户的访问令牌。它通常设置为NULL,但当存在被视为属于的文件夹的多个用户单个用户。这种类型最常用的文件夹是"我的"文件。调用应用程序负责更正hToken为非NULL时的模拟。它必须具有适当的特定用户的安全权限,以及用户的注册表当前必须装载配置单元。请参阅访问控制以了解更多信息访问控制问题的讨论。
将hToken参数赋值为-1表示默认用户。这允许SHGetFolderLocation的客户端查找文件夹默认用户的位置(如Desktop文件夹)。这个当任何新用户帐户创建,并包括特殊文件夹,如"我的文档"和桌面添加到默认用户文件夹的任何项目也显示在新用户帐户。