1

Тема: JS: Как добавить элемент в коллекцию Environment

Из документации с этого сайта прочёл что свойство Environment объекта WshShell:

Environment(<Type>). Возвращаемое значение: объект-коллекция "WshEnvironment", содержащая переменные среды.
Необязательный параметр "Type" - строка, задаёт вид переменных. Возможные значения:
• "System" - переменные среды операционной системы (в Windows NT/2000 - это параметр по умолчанию).
• "User" - переменные среды пользователя.
• "Volatile" - временные переменные.
• "Process" - переменные среды текущего командного окна (в Windows 95/98/Me - это единственно возможный параметр).
Замечание: чтение и запись. В коллекцию можно добавлять элементы и удалять их.

Кто знает: приведите пример как добавить переменную окружения. Отобразить коллекции конечно получается, но вот добавить никак не могу...

var WshShell = new ActiveXObject("WScript.Shell");
env = WshShell.Environment("User");
coll = new Enumerator(env), str = "";        
for(coll.moveFirst(), k = 1; !coll.atEnd(); coll.moveNext(), k++)
    {
    i = coll.item();                    
    str += k + ") " + i + "\n";
    }
WScript.Echo("Переменные среды Пользователя\n---------------------------------\n" + str + "\n" +
         "Количество переменных = " + env.Count());

Вот такой кусок выводит 2 переменные среды для текущего пользователя. К примеру как мне добавить третью, чтобы она также отображалась???

2

Re: JS: Как добавить элемент в коллекцию Environment

x=WshShell.Environment;
x.item('XXX')=123;
WScript.Echo(x.item('XXX'));

Я конечно далек от мысли... (с)

3

Re: JS: Как добавить элемент в коллекцию Environment

Из документации с этого сайта прочёл что свойство Environment объекта WshShell:

Замечание: чтение и запись. В коллекцию можно добавлять элементы и удалять их.

WshEnvironment Object

Удалять можно — есть метод .Remove, который работает только на текущую сессию:

The Remove method removes environment variables from the following types of environments: PROCESS, USER, SYSTEM, and VOLATILE. Environment variables removed with the Remove method are not removed permanently; they are only removed for the current session.

Добавлять нельзя.

4

Re: JS: Как добавить элемент в коллекцию Environment

alexii - не согласен, можно - проверено

Я конечно далек от мысли... (с)

5

Re: JS: Как добавить элемент в коллекцию Environment

smaharbA, угу. Я был неправ. Как такового, метода «.Add()» нет, просто берём имя переменной и присваиваем ей значение.

Ужас. Так и не понял, как (и почему) это работает. Причём, в этом случае .Remove работает перманентно.

6 (изменено: smaharbA, 2012-08-30 22:40:07)

Re: JS: Как добавить элемент в коллекцию Environment

Вызывает проблему синтаксис, таковое обычно работает в вбс, но не работает в джс )
(о том, что таковое не характерно для джаба скрипт (о синтаксисе присвоения))

при чем
x=WshShell.Environment;
x.item('XXX')=123;
WScript.Echo(x.item('XXX'));

без явного указания System, User или Volatile - применяет к систем, конечно если есть на то права

Я конечно далек от мысли... (с)

7

Re: JS: Как добавить элемент в коллекцию Environment

спасибо, всё работает.