2009-12-16 2 views

Répondre

1

Vous pouvez accéder aux variables d'environnement utilisateur via la collection WshEnvironment appropriée; il n'y a pas besoin de salir avec le registre:

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

Ce script affichera les noms de variables ainsi que des valeurs (non dilatées), par exemple:

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

Si vous avez besoin des noms de variables seulement, vous peut les extraire comme ceci:

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

Edit: d'étendre les variables, utilisez la méthode WshShell.ExpandEnvironmentStrings; par exemple:

// ... 
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

merci pour cela. que diriez-vous si je veux développer les variables? – qodeninja

1

Quand j'ai essayé le code donné dans la réponse, je me suis une erreur sur la ligne 4. Je crois qu'il devrait être:

var colVars = new Enumerator(oUserEnv); 
Questions connexes