Приведённый код понятен частично, есть вопросы, но, используя подсказки из drkb нарисовался другой сценарий, выходит следующее - перед удалением предварительно получаем привилегиии
Код:
...
// секция uses
uses
windows, NativeAPI, advApiHook;
...
// секция implementation
implementation
const
DrRegPath = '\registry\machine\system\CurrentControlSet\Services\';
...
// секция initialization (завершающая юнит)
initialization
EnablePrivilege('SeLoadDriverPrivilege');
...
затем
Код:
//Выгрузка драйвера
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;
опосля
Код:
//Удаление записи о драйвере из реестра
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;
должно быть так, пжлст, проверьте