Подписаться на RSS рассылку
Главная » Статьи по Delphi » Реестр » Запустить файл, указанный в реестре

Запустить файл, указанный в реестре

Автор: Борисов С. А.

Tweet

В реестре имеется в определенной ветке строковый параметр. Необхдимо считать его содержимое (в нем хранится путь к файлу) и запустить его. Напишим функцию которая будет это делать. Нам понадобятся 2 модуля (Registry, ShellAPI), которые необходимо будет добавить в раздел uses. первый для работы с реестром. Из второго нам потребуется функция ShellExecute.

uses Registry, ShellAPI;
...
function Run(root: HKEY; Path, NameKey: String): boolean;
var Reg:TRegistry;
  PathFile: string;
begin
  Result := true;
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  if Reg.OpenKey(Path, false) = false then
  begin
    result := false;
    exit;
  end;
  PathFile := Reg.ReadString(NameKey);
  Reg.Free;

  ShellExecute(Application.Handle, 'open', PAnsiChar(PathFile), nil, nil, SW_Normal);
end;

Теперь немного о коде который написали. С помощью TRegistry.Create мы создаем объект типа TRegistry, при помощи которого будем получать доступ к реестру. Далее указываем корень. Думаю если хотябы раз заходили в реестр с помощю того же самого Regedit.exe (пуск -> Выполнить -> regedit) поняли для чего это нужно. Чуть ниже идет условие, в котором выполняется функция OpenKey. Функция возвращает false если указаной ветки не найдено, либо произошла какая-нибудь другая ошибка. При возникновении ошибки, мы возвращаем функции Run значение false и завершаем её выполнение.

На заметку:

Если в функции OpenKey второй параметр установить в True, то если окажется что открываемой ветки не окажется - она создастся

После условия, если все прошло без ошибок, читаем параметр с именем NameKey (его передаем в функцию Run в качестве одного из параметров). После чего, нам уже не нужен объект Reg (к реестру уже доступ не нужен, все, что было нужно мы получили) и мы освобождаем занимаемую им память.

На заметку:

В функции ShellExecute я использовал в качестве одного из параметров значение, которое возвращает функция PAnsiChar. Но в Delphi 2009 произошли изменения и теперь функция ShellExecure требует в качестве параметра PWideChar. В этом случае нужно будет использовать функцию таким образом:

ShellExecute(Application.Handle, 'open', PWideChar(PathFile), nil, nil, SW_Normal);

Далее нужно использовать эту функцию. В качестве примера, положим на форму кнопку и создадим обработчик события OnClick. Функция запустит файл указанный в строковом параметре с названием file который находится в HKEY_CURRENT_USER\SOFTWARE\.

procedure TForm1.Button1Click(Sender: TObject);
begin
  Run(HKEY_CURRENT_USER, '\SOFTWARE\', 'file')
end;

Просмотров: 4964

Обсудить на форуме


Имя *:
Email:


Код *:

Copyright © 2008 - 2018 Программирование на Delphi для начинающих и не только.

Полнота авторских прав на все материалы, опубликованные на сервере DelphiDevelop.ru принадлежит их авторам.

Перепечатка материалов разрешается с указанием авторства и гиперссылки на первоисточник информации.