0

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

4

3 回答 3

1

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

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

于 2013-07-23T10:56:42.387 回答
0

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

  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 Folders",将 %userprofile% 替换为上一个点的路径
    它具有桌面文件夹路径。

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

于 2013-07-23T08:45:25.053 回答
0

嗯...你试过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

于 2013-07-22T21:09:43.680 回答