Я хочу перебрать ключи среды и распечатать список этих элементов.Как распечатать список ключей реестра в HKCU Environment для SDTOUT с помощью JScript (WSH)?
0
A
ответ
1
Вы можете получить доступ к переменным окружения пользователя через соответствующую коллекцию 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());
}
Этот скрипт будет выводить имена переменных вместе со значениями (не вспененные), например:
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);
}
Edit: Для расширения переменных, используйте метод 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);
}
1
Когда я попытался код, приведенный в ответ, я получил ошибку на линии 4. Я считаю, что должен быть:
var colVars = new Enumerator(oUserEnv);
спасибо за это. как насчет того, хочу ли я расширить переменные? – qodeninja