[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Программирование|Delphi|Pascal » Общие вопросы Delphi » Как средкствами API проверить существования ключа в реестре?
Как средкствами API проверить существования ключа в реестре?
Максим Дата: Суббота, 12.03.2011, 04:01 | Сообщение # 1 | Добавить в цитатник [ ? ]
Группа: Прохожие





Доброго времени суток. Мне нужно проверить в реестре существования ключа. Пишу маленькую прогу, поэтому мне нежелательно использовать Tregistry. Как это сделать с помощью WinApi ?
 

Гром Дата: Суббота, 12.03.2011, 04:42 | Сообщение # 2 | Добавить в цитатник [ ? ]
Всевидящее око
Группа: Владелец сайта
Сообщений: 792
Награды: 12
Статус: Offline
Вот я написал тебе фунцию на WinApi

Code

function RegEx(keysect: HKEY; keyName: pchar): boolean;
var
   TempKey: HKEY;
begin
   result:= RegOpenKey(keysect, keyName, TempKey) = ERROR_SUCCESS;
   regclosekey(TempKey);
end;

HKEY - секция, то есть имя раздела
keyName - название ключа

Пример вызова функции в приложении без формы:

program KeyExists;

uses
windows;

function RegEx(keysect: HKEY; keyName: pchar): boolean;
var
TempKey: HKEY;
begin
result:= RegOpenKey(keysect, keyName, TempKey) = ERROR_SUCCESS;
regclosekey(TempKey);
end;

begin
if RegEx(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\run') then
messagebox(0, 'Такой ключ есть', 'Успех', MB_OK+MB_ICONEXCLAMATION+MB_APPLMODAL)
else messagebox(0, 'Такого ключа нет', 'Ошибка', MB_OK+MB_ICONSTOP+MB_APPLMODAL);
end.

 

Максим Дата: Суббота, 12.03.2011, 15:02 | Сообщение # 3 | Добавить в цитатник [ ? ]
Группа: Прохожие





Спасибо! Всё работает. Теперь у меня такой вопрос. А как также через WinApi записать в реестр строковой параметр? Очень нужно!
 

Гром Дата: Суббота, 12.03.2011, 15:20 | Сообщение # 4 | Добавить в цитатник [ ? ]
Всевидящее око
Группа: Владелец сайта
Сообщений: 792
Награды: 12
Статус: Offline
Как я понял, ты трояна пишешь или что-то в этом роде. И если я правильно понял, ты хочешь прописаться в автозагрузку. Вот тебе пример
Code

Procedure InstallTrojan(sect: HKEY;KeyName, ExeName: string);
{sect - ИМЯ РАЗДЕЛА РЕЕСТРА
KeyName ИМЯ КЛЮЧА РЕЕСТРА
ExeName - ПОЛНЫЙ ПУТЬ К ПРОГРАММЕ. ЕСЛИ ПРОГРАММА В СИСТЕМНОМ КАТАЛОГЕ, ТО МОЖНО
ТОЛЬКО НАЗВАНИЕ ФАЙЛА С РАСШИРЕНИЕМ}
var
   Key: hkey;
begin
   if RegOpenKeyEx(sect, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0, KEY_CREATE_SUB_KEY or KEY_SET_VALUE, Key) = ERROR_SUCCESS then
    begin
     RegSetValueEx(Key, pchar(KeyName), 0, REG_SZ, Pointer(ExeName), lstrlen(Pchar(ExeName)) + 1);
     RegCloseKey(Key);
    end;
end;
 

Максим Дата: Суббота, 12.03.2011, 21:09 | Сообщение # 5 | Добавить в цитатник [ ? ]
Группа: Прохожие





Спасибо!!!
 

Форум » Программирование|Delphi|Pascal » Общие вопросы Delphi » Как средкствами API проверить существования ключа в реестре?
  • Страница 1 из 1
  • 1
Поиск:

 
Ваш логин: Ваш пароль: