Книга: Windows Script Host для Windows 2000/XP

Работа с системным реестром Windows

Работа с системным реестром Windows

Во всех версиях Windows системный реестр — это база данных, в которой хранится информация о конфигурации компьютера и операционной системы. С точки зрения пользователя, реестр является иерархическим деревом разделов, подразделов и параметров. Работать с этим деревом можно с помощью стандартного редактора реестра regedit.exe (рис. 2.20).


Рис. 2.20. Редактор реестра regedit.exe

С помощью методов объекта 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 последовательно удаляются из реестра.

Листинг 2.44. Работа с системным реестром (JScript)

/********************************************************************/
/* Имя: 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("Создать ключn"+Root+Key+"?",0,
 "Работа с реестром",vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
 //Записываем новый ключ
 WshShell.RegWrite(Root+Key,"");
 WshShell.Popup("Ключn"+Root+Key+" создан!",0,
  "Работа с реестром",vbInformation+vbOkOnly);
}
//Запрос на запись нового параметра
Res=WshShell.Popup("Записать параметрn"+Root+Key+ValueName+"?",0,
 "Работа с реестром",vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
 //Записываем новый строковый параметр
 WshShell.RegWrite(Root+Key+ValueName,SValue,"REG_SZ");
 WshShell.Popup("Параметрn"+Root+Key+ValueName+" записан!",0,
  "Работа с реестром",vbInformation+vbOkOnly);
 //Считываем значение созданного параметра
 SRegValue=WshShell.RegRead(Root+Key+ValueName);
 //Выводим на экран полученное значение
 WshShell.Popup(Root+Key+ValueName+"="+SRegValue,0,
  "Работа с реестром",vbInformation+vbOkOnly);
}
//Запрос на удаление параметра
Res=WshShell.Popup("Удалить параметрn"+Root+Key+ValueName+"?",0,
 "Работа с реестром",vbQuestion+vbYesNo);
if (Res==vbYes) { //Нажата кнопка Да
 //Удаляем параметр
 WshShell.RegDelete(Root+Key+ValueName);
 WshShell.Popup("Параметрn"+Root+Key+ValueName+" удален!",0,
  "Работа с реестром",vbInformation+vbOkOnly);
}
//Запрос на удаление раздела
Res=WshShell.Popup("Удалить разделn"+Root+Key+"?",0,
 "Работа с реестром",vbQuestion+vbYesNo);
if (Res==vbYes) {  //Нажата кнопка Да
 //Удаляем раздел
 WshShell.RegDelete(Root+Key);
 WshShell.Popup("Разделn"+Root+Key+" удален!",0,
  "Работа с реестром",vbInformation+vbOkOnly);
}
/*************  Конец *********************************************/

Реализация того же сценария на языке VBScript приведена в листинге 2.45.

Листинr 2.45. Работа с системным реестром (VBScript)

'********************************************************************
' Имя: 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)
If Res=vbYes Then   'Нажата кнопка Да
 'Записываем новый ключ
 WshShell.RegWrite Root & Key, ""
 WshShell.Popup "Ключ" & vbCrLf & Root & Key & " создан!",0,_
  "Работа с реестром",vbInformation+vbOkOnly
End If
'Запрос на запись нового параметра
Res=WshShell.Popup("Записать параметр" & vbCrLf & Root & Key & _
 ValueName & "?",0,"Работа с реестром",vbQuestion+vbYesNo)
If Res=vbYes Then   'Нажата кнопка Да
 'Записываем новый строковый параметр
 WshShell.RegWrite Root & Key & ValueName,SValue,"REG_SZ"
 WshShell.Popup "Параметр" & vbCrLf & Root & Key & _
  ValueName & " записан!",0,"Работа с реестром",vbInformation+vbOkOnly
 'Считываем значение созданного параметра
 SRegValue=WshShell.RegRead(Root & Key & ValueName)
 'Выводим на экран полученное значение
 WshShell.Popup Root & Key & ValueName & "=" & SRegValue,0,_
  "Работа с реестром",vbInformation+vbOkOnly
End If
'Запрос на удаление параметра
Res=WshShell.Popup("Удалить параметр" & vbCrLf & Root & Key & _
 ValueName & "?",0,"Работа с реестром",vbQuestion+vbYesNo)
If Res=vbYes Then   'Нажата кнопка Да
 'Удаляем параметр
 WshShell.RegDelete Root & Key & ValueName
 WshShell.Popup "Параметр" & vbCrLf & Root & Key & _
  ValueName & " удален!",0,"Работа с реестром",vbInformation+vbOkOnly
End If
'Запрос на удаление раздела
Res=WshShell.Popup("Удалить раздел" & vbCrLf & Root & Key & _
 "?",0,"Работа с реестром",vbQuestion+vbYesNo)
If Res=vbYes Then   'Нажата кнопка Да
 'Удаляем раздел
 WshShell.RegDelete Root & Key
 WshShell.Popup "Раздел" & vbCrLf & Root & Key & " удален!",0,_
  "Работа с реестром",vbInformation+vbOkOnly
End If
'*************  Конец *********************************************

Оглавление книги


Генерация: 0.033. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз