【问题标题】:Get desktop folder path by username通过用户名获取桌面文件夹路径
【发布时间】:2013-07-21 16:24:30
【问题描述】:

我正在使用 moonscript 并寻找一种解决方案,该解决方案将有助于使用在系统中注册的帐户用户名(不是当前用户)获取桌面文件夹路径。如果用户更改桌面位置怎么办。应用管理员的权限。有人面对这个吗?任何想法表示赞赏。

【问题讨论】:

    标签: windows path lua directory desktop


    【解决方案1】:

    您首先需要枚举用户配置文件所在的位置。配置文件的路径可以在 HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-xxx:ProfileImagePath 中找到。 S-1-5-21-xxx 代表相关用户的 SID。

    然后您需要从该配置文件路径加载 ntuser.dat 以最终获取桌面文件夹的用户外壳文件夹注册表值。

    【讨论】:

      【解决方案2】:

      嗯... 你试过os.getenv("CSIDL_DESKTOPDIRECTORY")吗? 它应该根据 technet@microsoft[1]

      工作

      更脏的方法是尝试使用某种 Lua Windows 注册表 API [2] 读取 Windows 注册表(HKCU > Software > Microsoft > Windows > CurrentVersion > Explorer > User Shell Folders > Desktop)。

      [1]http://technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx

      [2]http://lua-users.org/wiki/WindowsRegistry

      【讨论】:

      • 谢谢。这些仅适用于当前用户。我尝试了 cmd "runas" 命令来重新启动 appl,但它总是需要目标用户的密码,即使应用程序在管理员下运行。
      【解决方案3】:

      好的,我想我找到了解决方案。

      1. 获取用户 SID
      2. 获取用户配置文件路径
      3. "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\{User SID}\"->"ProfileImagePath"
      4. 从以下位置获取用户文件夹: “HKEY_USERS\{User SID}\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell 文件夹”,将 %userprofile% 替换为上一个点的路径
        它有桌面文件夹路径。

      PS:这不适用于内置帐户。

      【讨论】:

      • 请记住,HKU(SID) 仅在相关用户登录时才有效...
      猜你喜欢
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 2011-06-24
      • 2019-12-17
      • 1970-01-01
      • 2017-04-14
      相关资源
      最近更新 更多