Последние записи
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
3rd
Окт
Скопировать ключи реестра
Posted by micher under Delphi
Есть ключ реестра в секции HKEY_LOCAL_MACHINE\SOFTWARE\, у этого ключа есть несколько подключей, в каждом хранятся параметры разных типов.
Надо копировать этот ключ со всеми его подключами и значениям в секцию HKEY_CURRENT_USER\Software\. Как реализовать?
{Shadowevil}
Procedure TFrmMain.RegCopy(aKey: String);
var
Reg, Reg2: TRegistry;
SL: TStringList;
i: integer;
DT: TRegDataInfo;
begin
try
SL:=TStringList.Create;
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE; //откуда
Reg.OpenKey(aKey, false);
Reg.GetValueNames(SL);
Reg2:=TRegistry.Create;
Reg2.RootKey:=HKEY_CURRENT_USER; //куда
if Reg2.KeyExists(aKey) then exit;
Reg2.OpenKey(aKey, True);
for i:=0 to Sl.Count-1 do
begin
DT.RegData:=Reg.GetDataType(SL);
if (DT.RegData=rdInteger) then
Reg2.WriteInteger(SL, Reg.ReadInteger(SL));
if (DT.RegData=rdString) then
Reg2.WriteString(SL, Reg.ReadString(SL));
end;
Reg.GetKeyNames(SL);
for i:=0 to Sl.Count-1 do
begin
RegCopy(aKey+'\'+SL);
end;
except
FreeAndNil(Reg);
FreeAndNil(Reg2);
FreeAndNil(SL);
end;
end;
Эти условия проверяют только 2 типа параметров — численные и строковые,
Если надо проверить другие типы, придется добавить подобные условия для нужных типов
if (DT.RegData=rdInteger) then
Reg2.WriteInteger(SL, Reg.ReadInteger(SL));
if (DT.RegData=rdString) then
Reg2.WriteString(SL, Reg.ReadString(SL));
Пример использования:
Try
RegCopy('\SOFTWARE\YourKey'); //при необходимости подрекдактировать
Except
end;
Пост написан при поддержке master-komp — ремонт компьютеров на дому.
Даже самая современная техника имеет свойство… выходить из строя, причем обычно в самый неподходящий момент. И далеко не каждый обладатель компьютера может самостоятельно найти причину, устранить поломку. Поэтому нет ничего удивительного в том, что большой популярностью пользуются сегодня фирмы, в перечень услуг которых входят починка компьютеров, лечение от вирусов, установка разнообразного программного обеспечения.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)