gpt4 book ai didi

registry - 特定用户的 SHGetFolderPath()

转载 作者:行者123 更新时间:2023-12-04 18:44:25 25 4
gpt4 key购买 nike

我正在寻找一种为特定用户获取本地应用程序数据文件夹的好方法——而无需输入该用户的登录详细信息。

SHGetFolderPath() 可以接受我想要为其获取本地 appdata 文件夹的任何用户的访问 token ,但要获取访问 token ,您必须提供用户的密码。此外,根据 docs这在 <= Windows 2000 上不受支持。

注册表项 HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folder 包含 AppData 值,其中包含当前用户的本地 appdata 文件夹的位置......所以我可以在技术上为特定用户安装 HKCU 配置单元并访问该值;但是,Microsoft 似乎强烈反对使用此 key ,而且我听说它有时也可能不准确。

具有讽刺意味的是,在 Windows 上,管理员帐户可以轻松访问和修改任何用户的 appdata 文件夹中的所有数据,只要他们打开资源管理器并浏览到正确的位置......但似乎没有一种简单的方法来以编程方式获取特定用户的 appdata 文件夹的位置。

那么我还有其他选择吗?现在,访问注册表(喘气)似乎是最好的选择,但如果可能的话,我想使用官方的东西,而不是微软不鼓励的东西。

任何建议,将不胜感激。

最佳答案

如果没有 token AFAIK,没有记录的方法可以做到这一点,但最好的选择是:

  • 查找配置文件:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList(Win9x 上的%windir%\Profiles)
  • AdjustTokenPrivileges 为 SE_RESTORE_NAME
  • RegLoadKey NTUSER.DAT(9x 上的 USER.DAT)
  • 查询 ...\CurrentVersion\Explorer\User Shell 文件夹

  • 请注意,要检查的正确注册表项是用户外壳文件夹而不是外壳文件夹(并且您可能必须扩展路径),请参阅 The long and sad story of the Shell Folders key详情

    我还想指出,如果可能,您应该将数据存储在程序文件或公共(public)文件夹中,然后在您的程序第一次为每个用户运行时复制到配置文件中

    关于registry - 特定用户的 SHGetFolderPath(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1059460/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com