С помощью методов объекта WshShell
из сценариев WSH можно:
? создавать новые разделы и параметры (метод RegWrite
);
? изменять значения параметров и разделов (метод RegWrite
);
? считывать значения параметров и разделов (метод RegRead
);
? удалять параметры и разделы (метод RegDelete
).
В Windows ХР для работы с системным реестром сценарий должен иметь разрешение на доступ к разделам реестра, которым обладает администратор.
В листинге 2.44 представлен сценарий Registry.js, который производит манипуляции внутри корневого раздела HKEY_CURRENT_USER
, причем каждая операция выполняется только после утвердительного ответа на соответствующий запрос, формируемый в диалоговом окне.
Сначала в разделе HKEY_CURRENT_USER
создается подраздел ExampleKey
, в который затем записывается строковый параметр ExampleValue
со значением 'Value from WSH' (рис. 2.21).

Рис. 2.21. Элементы системного реестра, создаваемые сценарием Registry.js
После этого параметр ExampleValue
и раздел ExampleKey
последовательно удаляются из реестра.
/********************************************************************/
/* Имя: Registry.js */
/* Язык: JScript */
/* Описание: Работа с системным реестром */
/********************************************************************/
//Объявляем переменные
var WshShell,Root,Key,Res,SValue,ValueName,SRegValue;
//Инициализируем константы для диалоговых окон
var vbYesNo=4,vbQuestion=32,vbInformation=64,vbYes=6,vbOkOnly=0;
Root='HKEY_CURRENT_USER'; //Корневой ключ
Key='\ExampleKey\'; //Новый ключ
ValueName='ExampleValue'; //Имя нового параметра
SValue='Value from WSH'; //Значение нового параметра
//Создаем объект WshShell
WshShell=WScript.CreateObject('WScript.Shell');
//Запрос на создание нового ключа
Res=WshShell.Popup('Создать ключ
'+Root+Key+'?',0,
'Работа с реестром',vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
//Записываем новый ключ
WshShell.RegWrite(Root+Key,'');
WshShell.Popup('Ключ
'+Root+Key+' создан!',0,
'Работа с реестром',vbInformation+vbOkOnly);
}
//Запрос на запись нового параметра
Res=WshShell.Popup('Записать параметр
'+Root+Key+ValueName+'?',0,
'Работа с реестром',vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
//Записываем новый строковый параметр
WshShell.RegWrite(Root+Key+ValueName,SValue,'REG_SZ');
WshShell.Popup('Параметр
'+Root+Key+ValueName+' записан!',0,
'Работа с реестром',vbInformation+vbOkOnly);
//Считываем значение созданного параметра
SRegValue=WshShell.RegRead(Root+Key+ValueName);
//Выводим на экран полученное значение
WshShell.Popup(Root+Key+ValueName+'='+SRegValue,0,
'Работа с реестром',vbInformation+vbOkOnly);
}
//Запрос на удаление параметра
Res=WshShell.Popup('Удалить параметр
'+Root+Key+ValueName+'?',0,
'Работа с реестром',vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
//Удаляем параметр
WshShell.RegDelete(Root+Key+ValueName);
WshShell.Popup('Параметр
'+Root+Key+ValueName+' удален!',0,
'Работа с реестром',vbInformation+vbOkOnly);
}
//Запрос на удаление раздела
Res=WshShell.Popup('Удалить раздел
'+Root+Key+'?',0,
'Работа с реестром',vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
//Удаляем раздел
WshShell.RegDelete(Root+Key);
WshShell.Popup('Раздел
'+Root+Key+' удален!',0,
'Работа с реестром',vbInformation+vbOkOnly);
}
/************* Конец *********************************************/
Реализация того же сценария на языке VBScript приведена в листинге 2.45.
'********************************************************************
' Имя: Registry.vbs
' Язык: VBScript
' Описание: Работа с системным реестром
'********************************************************************
Option Explicit
'Объявляем переменные
Dim WshShell,Root,Key,Res,SValue,ValueName,SRegValue
Root='HKEY_CURRENT_USER' 'Корневой ключ
Key='ExampleKey' 'Новый ключ
ValueName='ExampleValue' 'Имя нового параметра
SValue='Value from WSH' 'Значение нового параметра
'Создаем объект WshShell
Set WshShell=WScript.CreateObject('WScript.Shell')
'Запрос на создание нового ключа
Res=WshShell.Popup('Создать ключ' & vbCrLf & Root & Key & '?',0,_
'Работа с реестром',vbQuestion+vbYesNo)