按用户名获取桌面文件夹路径

时间:2013-07-22 19:38:16

标签: windows path lua directory desktop

我正在使用moonscript并寻找一种解决方案,该解决方案将使用在系统(非当前用户)中注册的帐户用户名来帮助获取桌面文件夹路径。如果用户更改桌面位置会怎样管理员的特权适用。有人面对这个吗?任何想法都赞赏。

3 个答案:

答案 0 :(得分:0)

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

工作

使用某种Lua Windows注册表API [2]尝试阅读Windows注册表(HKCU>软件> Microsoft> Windows> CurrentVersion> Explorer>用户外壳文件夹>桌面)的方式会更加肮脏]

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

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

答案 1 :(得分:0)

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

  1. 获取用户SID
  2. 获取用户个人资料路径 “HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ {User SID} \” - >“ProfileImagePath”
  3. 从以下位置获取用户文件夹: “HKEY_USERS \ {用户SID} \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \用户外壳文件夹”,将%userprofile%替换为来自prev点的路径
    它有桌面文件夹路径。
  4. PS:这不适用于内置帐户。

答案 2 :(得分:0)

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

然后,您需要从该配置文件路径加载ntuser.dat,最后获取桌面文件夹的User Shell Folder注册表值。