|
Определяет объект, предназначенный для работы с реестром Windows.
Собственные свойства
|
Свойство
| Тип
| Описание
|
Access
| Enumset
| права доступа к информации (см. ниже)
|
LazyWrite
| Boolean
| флаг отложенной записи изменений на диск
|
RootKey
| Enum
| корневой ключ (см. ниже)
|
Только чтение
| [TYPE]
| [DESC]
|
CurrentKey
| Number
| дескриптор HKEY текущего ключа
|
CurrentPath
| String
| путь к текущему ключу
|
|
Свойство Access
|
Значение
| Описание
|
KEY_ALL_ACCESS
| максимальный доступ к информации (комбинация ключей KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK и KEY_SET_VALUE)
|
KEY_CREATE_LINK
| права на создание символических ссылок
|
KEY_CREATE_SUB_KEY
| права на создание подключей
|
KEY_ENUMERATE_SUB_KEYS
| права на чтение имен подключей
|
KEY_EXECUTE
| права на чтение информации
|
KEY_NOTIFY
| права на уведомления об изменениях
|
KEY_QUERY_VALUE
| права на опрос значений параметров
|
KEY_READ
| права на чтение информации (комбинация ключей KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS и KEY_NOTIFY)
|
KEY_SET_VALUE
| права на установку значений параметров
|
KEY_WOW64_32KEY
| права на доступ к 32-битным ключам
|
KEY_WOW64_64KEY
| права на доступ к 64-битным ключам
|
KEY_WOW64_RES
| комбинация ключей KEY_WOW64_32KEY и KEY_WOW64_64KEY
|
KEY_WRITE
| права на запись информации (комбинация ключей KEY_SET_VALUE и KEY_CREATE_SUB_KEY)
|
|
Свойство RootKey
|
Значение
| Описание
|
HKEY_CURRENT_USER
| Содержит настройки текущего пользователя Windows. Является подразделом корневого ключа HKEY_USERS.
|
HKEY_USERS
| Содержит настройки всех активных пользователей системы.
|
HKEY_LOCAL_MACHINE
| Содержит настойки конфигурации компьютера, относящиеся ко всем пользователям.
|
HKEY_CLASSES_ROOT
| Содержит информацию о зарегистрированных типах файлов, а также об объектах COM и ActiveX. Является синонимом ключа HKEY_LOCAL_MACHINE\Software\Classes.
|
HKEY_CURRENT_CONFIG
| Содержит информацию о профиле оборудования, используемом локальным компьютером при запуске системы.
|
HKEY_PERFORMANCE_DATA
| Содержит счетчики производительности системы и подобную техническую информацию. Данные этого раздела реестра хранятся только в оперативной памяти компьютера.
|
|
Собственные методы
|
Метод
| Описание
|
CloseKey
| сохраняет и закрывает ключ реестра
|
CreateKey
| создает ключ реестра c указанным именем
|
DeleteKey
| удаляет ключ реестра c указанным именем
|
DeleteValue
| удаляет указанный параметр текущего ключа
|
GetDataAsString
| возвращает значение указанного параметра в виде строки
|
GetDataInfo
| возвращает информацию о данных указанного параметра текущего ключа
|
GetDataSize
| возвращает размер данных указанного параметра текущего ключа
|
GetDataType
| возвращает тип данных указанного параметра текущего ключа
|
GetKeyInfo
| возвращает информацию о текущем ключе
|
GetKeyNames
| возвращает список имен дочерних ключей текущего ключа
|
GetValueNames
| возвращает список имен параметров текущего ключа
|
HasSubKeys
| сообщает о наличии дочерних ключей текущего ключа
|
KeyExists
| сообщает о наличии ключа с указанным именем
|
LoadKey
| создает указанный временный ключ с использованием указанного файла
|
MoveKey
| копирует или переносит указанный ключ
|
OpenKey
| открывает ключ с указанным именем
|
OpenKeyReadOnly
| открывает ключ с указанным именем только для чтения
|
ReadBinaryData
| читает двоичные данные из указанного параметра текущего ключа
|
ReadBool
| возвращает лигическое значение указанного параметра текущего ключа
|
ReadDateTime
| возвращает значение указанного параметра текущего ключа в формате DateTime
|
ReadFloat
| возвращает вещественное значение указанного параметра текущего ключа
|
ReadInteger
| возвращает целое значение указанного параметра текущего ключа
|
ReadString
| возвращает текстовое значение указанного параметра текущего ключа
|
RegistryConnect
| устанавливает соединение с реестром сетевого компьютера
|
RenameValue
| переименовывает указанный параметр текущего ключа
|
ReplaceKey
| заменяет содержимое указанного ключа из указанного файла
|
RestoreKey
| восстанавливает содержимое указанного ключа из указанного файла
|
SaveKey
| сохраняет содержимое указанного ключа в указанном файле
|
UnLoadKey
| удаляет указанный ключ, созданный методом LoadKey
|
ValueExists
| сообщает о наличии указанного параметра текущего ключа
|
WriteBinaryData
| сохраняет двоичные данные в указанном параметре текущего ключа
|
WriteBool
| сохраняет логическое значение в указанном параметре текущего ключа
|
WriteDateTime
| сохраняет значение типа DateTime в указанном параметре текущего ключа
|
WriteExpandString
| сохраняет переменную окружения в указанном параметре текущего ключа
|
WriteFloat
| сохраняет вещественное значение в указанном параметре текущего ключа
|
WriteInteger
| сохраняет целое значение в указанном параметре текущего ключа
|
WriteString
| сохраняет текстовое значение в указанном параметре текущего ключа
|
|
Стандартные методы
var sel_Itm=0;
// Главная форма frm=new TForm(); frm.Caption="JS+ - системный компонент TRegistry"; frm.Width =800; frm.Height=600;
// Строка состояния из двух сегментов stb=new TStatusBar(frm); stb.SimplePanel=false; stp=new TStatusPanel(stb); stp.Text=" Название ключа"; stp=new TStatusPanel(stb); stp.Alignment=taCenter; stp.Text="Последнее изменение"; stp.Width=frm.TextWidth(stp.Text)+20; stb.Panels[0].Width=stb.ClientWidth-stp.Width;
// Внешняя панель pnl=new TPanel(frm); pnl.SetBounds(10,10,frm.ClientWidth-20,stb.Top-20);
// ListView lsv=new TListView(pnl); lsv.BorderStyle=bsSingle; lsv.ViewStyle=vsReport; lsv.ColumnClick=false; lsv.Align=alRight; lsv.Width=pnl.ClientWidth-250; lsv.OnDblClick=lsv_DblClick;
for (i=w=0;i<3;i++) { lsc=new TListColumn(lsv); switch (i) { case 0: lsc.Caption=" Имя "; w+=(lsc.Width=180); break;
case 1: lsc.Caption=" Тип "; w+=(lsc.Width=lsv.TextWidth("UNKNOWN")+15); break;
case 2: lsc.Caption=" Значение "; lsc.Width=lsv.ClientWidth-w; } }
// Разделитель spl=new TSplitter(pnl); spl.Align=alRight; spl.Width=5; spl.MinSize=pnl.ClientWidth-lsv.Width-spl.Width;
// Outline otl=new TOutline(pnl); otl.BorderStyle=bsSingle; otl.Align=alClient; otl.OnExpand=otl_Expand; otl.OnClick=otl_Click;
// HKEY_CURRENT_USER otn=new TOutlineNode(otl); otn.numTag=eval(otn.Text="HKEY_CURRENT_USER"); Hand_Key(otn,false);
// HKEY_LOCAL_MACHINE otn=new TOutlineNode(otl); otn.numTag=eval(otn.Text="HKEY_LOCAL_MACHINE"); Hand_Key(otn,false);
frm.ShowModal();
function Hand_Key(Node,Recurse) { var i,stl,reg,otn,stp_Str,key_Str=otl.ItemSeparator; var stp=stb.Panels[0];
if (Node.HasItems) { if (Recurse==true) { stp_Str=stp.Text; for (i=Node.getFirstChild();i>=0;i=Node.getNextChild(i)) { stp.Text=" "+otl.Items[i].FullPath; Hand_Key(otl.Items[i],false); } stp.Text=stp_Str; } return; }
if (Node.Level>1) { key_Str+=Node.FullPath. substr(Node.FullPath.indexOf(otl.ItemSeparator)+1); if (key_Str.substr(i=key_Str.length-1)==otl.ItemSeparator) key_Str=key_Str.substr(0,i); }
reg=new TRegistry(); reg.RootKey=Node.numTag; if (!reg.OpenKeyReadOnly(key_Str)) { reg.Delete(); return; }
reg.GetKeyNames(stl=new TStrings()); for (i=0;i<stl.Count;i++) { if (stl.Strings[i]=="") continue; otn=new TOutlineNode(Node); otn.Text=stl.Strings[i]; otn.numTag=Node.numTag; } stl.Delete();
reg.Delete(); }
// Обработчик события OnExpand function otl_Expand(otl,index) { Hand_Key(otl.Items[index],true); }
// Обработчик события OnClick/Outline function otl_Click(otl) { var i,j,k,d,reg,stl,lvi,otn,stl_Str,key_Str,type_Str,val_Str; var bin_Lst,rki=new TRegKeyInfo();
if (sel_Itm==otl.SelectedItem) return; otn=otl.Items[sel_Itm=otl.SelectedItem];
lsv.Clear();
key_Str=otl.ItemSeparator+otn.FullPath. substr(otn.FullPath.indexOf(otl.ItemSeparator)+1); if (key_Str.substr(i=key_Str.length-1)==otl.ItemSeparator) key_Str=key_Str.substr(0,i);
reg=new TRegistry(); reg.RootKey=otn.numTag; if (!reg.OpenKeyReadOnly(key_Str)) { reg.Delete(); return; }
stb.Panels[0].Text=" "+otn.FullPath; stb.Panels[1].Text=""; if (reg.GetKeyInfo(rki)==true) { d=new Date(rki.FileTime); stb.Panels[1].Text=d.toLocaleDateString(); d.Delete(); }
stl=new TStrings(); stl.Sorted=true; reg.GetValueNames(stl); for (i=0;i<stl.Count;i++) { if ((stl_Str=stl.Strings[i])=="") continue;
type_Str=val_Str="";
switch (reg.getDataType(stl_Str)) { case rdString : case rdExpandString: type_Str="STRING"; val_Str=reg.ReadString(stl_Str); break;
case rdInteger : type_Str="NUMBER"; j=reg.ReadInteger(stl_Str); val_Str="0x"+j.toStringEx(16,8).toUpperCase(); break;
case rdBinary : type_Str="BINARY"; stb.Panels[0].Text+=" 3"; if ((j=reg.GetDataSize(stl_Str))<=0) break; stb.Panels[0].Text+=" 1"; bin_Lst=new Array(j); k=reg.ReadBinaryData(stl_Str,bin_Lst,j); stb.Panels[0].Text+=" 2"; for (j=0;(j<k) && (j<100);j++) if (bin_Lst[j]!=undefined) val_Str+=" "+bin_Lst[j].toStringEx(16,2).toUpperCase(); stb.Panels[0].Text+=" 3"; if ((j==100) && (k>j)) val_Str+="..."; stb.Panels[0].Text+=" 4"; val_Str=val_Str.trim(); stb.Panels[0].Text+=" 5"; bin_Lst.Delete(); stb.Panels[0].Text+=" 6"; break;
default: type_Str="UNKNOWN"; }
lvi=new TListItem(lsv); lvi.Caption=stl_Str; lvi.SubItems.Add(type_Str); lvi.SubItems.Add(val_Str); }
stl.Delete(); reg.Delete(); }
// Обработчик события OnDblClick function lsv_DblClick(lsv) { var i,j,reg,lvi,otn,frp,lbe,lbl,mem,btn,key_Str,bin_Lst; var prm_Ttl,prm_Val="";
if (((lvi=lsv.Selected)==null) || ((i=otl.SelectedItem)<0)) return; otn=otl.Items[i]; prm_Ttl=lvi.Caption;
// Форма параметра frp=new TForm(); frp.Caption=" Просмотр параметра"; frp.Width=500; frp.KeyPreview=true; frp.OnKeyPress=frp_KeyPress;
// Метка параметра lbe=new TLabeledEdit(frp); lbe.EditLabel.Caption="Параметр: "; lbe.BorderStyle=bsSingle; lbe.Left=10; lbe.Top =10+lbe.EditLabel.Height; lbe.Width=frp.ClientWidth-lbe.Left*2; lbe.ReadOnly=true; lbe.Text=prm_Ttl;
// Метка значения lbl=new TLabel(frp); lbl.Caption="Значение: "; lbl.Left=lbe.Left; lbl.Top =lbe.Top+lbe.Height+10;
// Текстовое поле значения mem=new TMemo(frp); mem.BorderStyle=bsSingle; mem.SetBounds(lbe.Left,lbl.Top+lbl.Height+5,lbe.Width,200); mem.ReadOnly=true;
key_Str=otl.ItemSeparator+otn.FullPath. substr(otn.FullPath.indexOf(otl.ItemSeparator)+1); if (key_Str.substr(i=key_Str.length-1)==otl.ItemSeparator) key_Str=key_Str.substr(0,i);
reg=new TRegistry(); reg.RootKey=otn.numTag; if (!reg.OpenKeyReadOnly(key_Str)) { reg.Delete(); frp.Delete(); return; }
switch (reg.getDataType(prm_Ttl)) { case rdString : case rdExpandString: prm_Val=reg.readString(prm_Ttl); break;
case rdInteger : i=reg.readInteger(prm_Ttl); prm_Val=i.toStringEx(16,8).toUpperCase(); break;
case rdBinary : if ((i=reg.GetDataSize(prm_Ttl))==0) break; bin_Lst=new Array(i); j=reg.ReadBinaryData(prm_Ttl,bin_Lst,i); for (i=0;i<j;i++) if (bin_Lst[i]!=undefined) prm_Val+=bin_Lst[i].toStringEx(16,2).toUpperCase(); bin_Lst.Delete(); break;
default: reg.Delete(); frp.Delete(); return; } mem.Text=prm_Val; reg.Delete();
// Кнопка btn=new TButton(frp); btn.Caption="ОК"; btn.Left=lbe.Left+lbe.Width-btn.Width; btn.Top =mem.Top+mem.Height+10; btn.Hint="Закрыть окно"; btn.ShowHint=true; btn.OnClick=btn_Click;
frp.ClientHeight=btn.Top+btn.Height+10;
mem.SetFocus(); frp.ShowModal(); }
// Обработчик события OnKeyPress function frp_KeyPress(frp,Key) { switch (Key.Value) { case VK_ENTER : case VK_ESCAPE: frp.Close(); } }
// Обработчик события OnClick/Button function btn_Click(btn) { btn.Parent.Close(); }
|
Совместимость
C++ Builder/Delphi
|
JS+ | Руководство пользователя
|
|
|