【发布时间】:2011-05-04 19:22:42
【问题描述】:
在 Vista 中,我试图在本地计算机上获取用户帐户(当前用户除外)的“本地 AppData”路径,但遇到了一些问题。任何人都可以帮助我下面的代码有什么问题。
var HKU = 0x80000003;
var username = "xyz";
//Loading registry hive of user xyz
var WshShell = new ActiveXObject("WScript.Shell");
var LoadHiveCmd = "REG LOAD " + "HKU" + "\\" + username + " \"" + "c:\\users\\xyz\\NTUSER.DAT" + "\"";
var oExec = WshShell.Exec(strLoadHiveCmd);
var oReg = GetObject("WinMgmts:/root/default:StdRegProv");
var profileRegPath = username + "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders";
var method, inparams, outparams;
method = oReg.Methods_.Item("GetExpandedStringValue");
inparams = method.InParameters.SpawnInstance_();
inparams.hDefKey = HKU;
inparams.sSubKeyName = profileRegPath ;
inparams.sValueName = "Local AppData";
outparams = oReg.ExecMethod_(method.Name, inparams);
var appDataPath= outparams.sValue;
这里注册表中的appDataPath值为%USERPROFILE%\AppData\Local
但是我得到了一个值C:\Windows\system32\config\systemprofile\AppData\Local
我不明白c:\windows\system32\config\systemprofile 的值是从哪里来的,以及它是如何取代%USERPROFILE% 值的。
【问题讨论】:
-
一位社区用户很好地为您格式化了您的代码。请查看How to format code on StackOverflow,以确保您以易于阅读的格式为帮助者提供代码。
标签: javascript windows-vista special-folders