2009-12-16 4 views

ответ

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); 
} 
+0

спасибо за это. как насчет того, хочу ли я расширить переменные? – qodeninja

1

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

var colVars = new Enumerator(oUserEnv); 

 Смежные вопросы

  • Нет связанных вопросов^_^