Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Установка драйвера

Delphi , ОС и Железо , Драйвера

Есть 2 файла драйвера - Sys и Ini как установить драйвер?

Code:

function Install: Boolean;
const
StartType =
{$IFDEF SERVICE_DEBUG}          
   SERVICE_DEMAND_START;
{$ELSE}
   SERVICE_AUTO_START;
{$ENDIF}
var
SCManager, Service: SC_HANDLE;
Info: String;
begin
SCManager := OpenSCManager(nil, nil, SC_MANAGER_CREATE_SERVICE);
if SCManager <> 0 then
try
   Service := CreateService(SCManager, PChar(ServiceName), ServiceDisplayName,
     SERVICE_ALL_ACCESS, SERVICE_WIN32_SHARE_PROCESS or SERVICE_INTERACTIVE_PROCESS,
     StartType, SERVICE_ERROR_NORMAL, PChar('"' + ParamStr(0) + '" -service'),
     nil, nil, nil, nil, nil);
   if Service <> 0 then
   try
     Result := ChangeServiceConfig(Service, SERVICE_NO_CHANGE,
       SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, nil, nil,
       nil, nil, nil, nil, nil);
     Info := ServiceInfo;
     if Result then
       Result := ChangeServiceConfig2(Service,
         SERVICE_CONFIG_DESCRIPTION, @Info);
   finally
     CloseServiceHandle(Service);
   end
   else
     Result := GetLastError = ERROR_SERVICE_EXISTS;
finally
   CloseServiceHandle(SCManager);
end
else
   Result := False
end;

Автор: Rouse_

Взято из http://forum.sources.ru

Code:

unit DrvMgr;
 
interface
 
uses
windows, NativeAPI, advApiHook;
 
function InstallDriver(drName, drPath: PChar): boolean;
function UninstallDriver(drName: PChar): boolean;
function LoadDriver(dName: PChar): boolean;
function UnloadDriver(dName: PChar): boolean;
 
implementation
 
const
DrRegPath = '\registry\machine\system\CurrentControlSet\Services\';
 
{
Создание в реестре записи о драйвере.
drName - имя драйвера,
drPath - путь к файлу драйвера,
Result - успешность установки.
}
function InstallDriver(drName, drPath: PChar): boolean;
var
Key, Key2: HKEY;
dType: dword;
Err: dword;
NtPath: array[0..MAX_PATH] of Char;
begin
Result := false;
dType := 1;
Err := RegOpenKeyA(HKEY_LOCAL_MACHINE, 'system\CurrentControlSet\Services', Key);
if Err = ERROR_SUCCESS then
 begin
   Err := RegCreateKeyA(Key, drName, Key2);
   if Err <> ERROR_SUCCESS then Err := RegOpenKeyA(Key, drName, Key2);
   if Err = ERROR_SUCCESS then
     begin
      lstrcpy(NtPath, PChar('\??\' + drPath));
      RegSetValueExA(Key2, 'ImagePath', 0, REG_SZ, @NtPath, lstrlen(NtPath));
      RegSetValueExA(Key2, 'Type', 0, REG_DWORD, @dType, SizeOf(dword));
      RegCloseKey(Key2);
      Result := true;
     end;
   RegCloseKey(Key);
 end;
end;
 
{
Удаление записи о драйвере из реестра.
}
function UninstallDriver(drName: PChar): boolean;
var
Key: HKEY;
begin
Result := false;
if RegOpenKeyA(HKEY_LOCAL_MACHINE, 'system\CurrentControlSet\Services', Key) = ERROR_SUCCESS then
   begin
     RegDeleteKey(Key, PChar(drName+'\Enum'));
     RegDeleteKey(Key, PChar(drName+'\Security'));
     Result := RegDeleteKey(Key, drName) = ERROR_SUCCESS;
     RegCloseKey(Key);
   end;
end;
 
{
Загрузка драйвера.
}
function LoadDriver(dName: PChar): boolean;
var
Image: TUnicodeString;
Buff: array [0..MAX_PATH] of WideChar;
begin
StringToWideChar(DrRegPath + dName, Buff, MAX_PATH);
RtlInitUnicodeString(@Image, Buff);
Result := ZwLoadDriver(@Image) = STATUS_SUCCESS;
end;
 
 
{
Выгрузка драйвера.
}
function UnloadDriver(dName: PChar): boolean;
var
Image: TUnicodeString;
Buff: array [0..MAX_PATH] of WideChar;
begin
StringToWideChar(DrRegPath + dName, Buff, MAX_PATH);
RtlInitUnicodeString(@Image, Buff);
Result := ZwUnloadDriver(@Image) = STATUS_SUCCESS;
end;
 
initialization
EnablePrivilege('SeLoadDriverPrivilege');
 
end.

Автор: Arazel

Взято из http://forum.sources.ru

Похоже, у вас есть два кода на Delphi, которые связаны с установкой, удалением, загрузкой и разгрузкой драйвера.

Первый код - это рутин установки Windows-сервиса. Он использует функцию OpenSCManager для открытия менеджера сервисов, создает новый сервис с помощью CreateService, а затем настраивает его с помощью ChangeServiceConfig. Функция InstallDriver устанавливает драйвер, создавая регистрационный ключ и устанавливающий его значения.

Второй код - это менеджер драйвера, который предоставляет функции для установки, удаления, загрузки и разгрузки драйвера. Он использует Windows API для взаимодействия с регистром и выполняет задачи, такие как:

  1. : создает новый регистрационный ключ и устанавливает его значения.
  2. Удаление драйвера: удаляет регистрационные ключи, связанные с драйвером.
  3. Загрузка драйвера: использует функцию ZwLoadDriver для загрузки драйвера в память.
  4. Разгрузка драйвера: использует функцию ZwUnloadDriver для разгрузки драйвера из памяти.

Чтобы установить драйвер с помощью этих кодов, вам нужно:

  1. Скомпилировать и запустить рутину установки (первый код) для создания Windows-сервиса для драйвера.
  2. Скомпилировать и запустить менеджер драйвера (второй код) для установки драйвера, вызвав функцию InstallDriver.

Вот пример использования этих кодов вместе:

program InstallDriver;
uses
  windows, NativeAPI, advApiHook, DrvMgr;
const
  DR_NAME = 'MyDriver';
  DR_PATH = 'C:\Path\To\Driver.sys';
var
  Result: Boolean;
begin
   // Создать Windows-сервис для драйвера
  Result := InstallService(DR_NAME, SERVICE_AUTO_START);
  if not Result then
    Exit;

   // Установить драйвер с помощью менеджера драйвера
  Result := InstallDriver(DR_NAME, DR_PATH);
  if not Result then
    Exit;
end.

Обратите внимание, что эти коды только примеры и могут требовать модификаций для корректной работы в вашем конкретном сценарии. Кроме того, установка и управление драйверами может быть сложным процессом, поэтому убедитесь, что понимаете последствия и потенциальные риски, связанные с этим.

Установка драйвера на компьютере заключается в создании записи о драйвере в реестре Windows и загрузке драйвера в операционную систему.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Драйвера ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 17:29:12/0.0035600662231445/0