Scripting 如何使用JScript(WSH)将HKCU\Environment中的注册表项列表打印到SDTOUT?

Scripting 如何使用JScript(WSH)将HKCU\Environment中的注册表项列表打印到SDTOUT?,scripting,registry,environment-variables,javascript,wsh,Scripting,Registry,Environment Variables,Javascript,Wsh,我想迭代环境键并打印这些项的列表。您可以通过适当的集合访问用户环境变量;没有必要弄乱注册表: var oShell = new ActiveXObject("WScript.Shell"); var oUserEnv = oShell.Environment("User"); var colVars = new Enumerator(oUserEnv); for(; ! colVars.atEnd(); colVars.moveNext()) { WScript.Echo(colVars.

我想迭代环境键并打印这些项的列表。

您可以通过适当的集合访问用户环境变量;没有必要弄乱注册表:

var oShell = new ActiveXObject("WScript.Shell");
var oUserEnv = oShell.Environment("User");

var colVars = new Enumerator(oUserEnv);
for(; ! colVars.atEnd(); colVars.moveNext())
{
  WScript.Echo(colVars.item());
}
此脚本将输出变量名和值(非扩展),例如:

编辑:要展开变量,请使用方法;例如:

// ...
var arr, strVarName, strVarValue;
for(; ! colVars.atEnd(); colVars.moveNext())
{
  arr = colVars.item().split("=");
  strVarName = arr[0];
  strVarValue = oShell.ExpandEnvironmentStrings(arr[1]);

  WScript.Echo(strVarName + "=" + strVarValue);
}

当我尝试回答中给出的代码时,第4行出现了一个错误。我认为应该是:


谢谢你。如果我想展开变量呢?
// ...
var strVarName;
for(; ! colVars.atEnd(); colVars.moveNext())
{
  strVarName = colVars.item().split("=")[0];
  WScript.Echo(strVarName);
}
// ...
var arr, strVarName, strVarValue;
for(; ! colVars.atEnd(); colVars.moveNext())
{
  arr = colVars.item().split("=");
  strVarName = arr[0];
  strVarValue = oShell.ExpandEnvironmentStrings(arr[1]);

  WScript.Echo(strVarName + "=" + strVarValue);
}
var colVars = new Enumerator(oUserEnv);