Как напечатать список ключей реестра в HKCU \ Environment для SDTOUT, используя JScript (WSH)? - PullRequest
0 голосов
/ 16 декабря 2009

Я хочу перебрать ключи окружения и распечатать список этих элементов.

Ответы [ 2 ]

1 голос
/ 21 декабря 2009

Когда я попробовал код, указанный в ответе, я получил ошибку в строке 4. Я верю, что должно быть:

var colVars = new Enumerator(oUserEnv);
1 голос
/ 16 декабря 2009

Вы можете получить доступ к переменным среды пользователя через соответствующую коллекцию WshEnvironment; нет необходимости связываться с реестром:

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());
}

Этот скрипт выведет имена переменных вместе со значениями (не развернутыми), например ::100100

TEMP=%USERPROFILE%\Local Settings\Temp
TMP=%USERPROFILE%\Local Settings\Temp
Path=%PATH%
PATHEXT=%PATHEXT%;.tcl

Если вам нужны только имена переменных, вы можете извлечь их следующим образом:

// ...
var strVarName;
for(; ! colVars.atEnd(); colVars.moveNext())
{
  strVarName = colVars.item().split("=")[0];
  WScript.Echo(strVarName);
}

Редактировать: Чтобы раскрыть переменные, используйте метод WshShell.ExpandEnvironmentStrings; например:

// ...
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);
}
...