我正在使用moonscript并寻找一种解决方案,该解决方案将有助于使用在系统中注册的帐户用户名(不是当前用户)获取桌面文件夹路径。如果用户更改桌面位置怎么办。应用管理员的权限。有人面对这个吗?任何想法表示赞赏。
问问题
1699 次
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
好的,我想我找到了解决方案。
- 获取用户 SID
- 获取用户配置文件路径 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\{User SID}\"->"ProfileImagePath"
- 从以下位置获取用户文件夹:
"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
于 2013-07-22T21:09:43.680 回答