谁能帮助我以下的JScript?
|
在Vista中,我试图为本地计算机上的用户帐户(当前用户除外)获取\“ Local 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
但是我得到ѭ2的价值
我不了解c:\\windows\\system32\\config\\systemprofile
的值来自何处以及它如何代替%USERPROFILE%
的值。
没有找到相关结果
已邀请:
2 个回复
才改隘瘁
娜拐赐巫潭
自动将注册表值数据中包含的所有环境变量替换为这些变量的实际值。由于WMI服务本身以本地系统帐户运行,因此%USERPROFILE%最有可能扩展到C:\\ Windows \\ system32 \\ config \\ systemprofile而不是C:\\ users \\ admin。 您需要使脚本正常工作的是: 使用
而非
读取未扩展的
值, 通过从
键中读取
值来获取所需用户的个人资料路径, 执行字符串替换以用配置文件路径替换%USERPROFILE%。 您可以在我的答案中找到如何执行此操作的示例: 在Jscript中获取给定用户的特殊文件夹路径 您可能还想使用
代替WMI,因为它对JScript更友好。