![]() |
Re: Treiber installieren, starten, stoppen, deinstallieren
Könntest du bitte mal genau hinschauen und meine IF-Bedingung übernehmen statt deine Bedingung weiter zu nutzen. Danke! :roll:
|
Re: Treiber installieren, starten, stoppen, deinstallieren
Autsch. Sorry, jetz hab ich nicht genau hingeguckt.
Ich habe deswegen jetzt selber noch etwas genauer hingeschaut und ein paar Sachen verbessert. Es klappt jetz :D ich weiss es nicht ob es überhaupt nochmal nützlich für jemanden sein könnte. Vlt wäre ein Post in der CodeLibrary nicht verkehrt ? Naja wens interessiert hier:
Delphi-Quellcode:
function load_sysfile(DriverPath: String):boolean;
var sh, rh : SC_HANDLE; aPath,dummy,DriverName : PChar; PreviousState : Boolean; begin If not EnablePrivilege('SeLoadDriverPrivilege',False,PreviousState) = ERROR_SUCCESS Then begin MessageBox(0,'Fehler beim akquirieren des SeLoadDriverPrivileges!','Error Handling',MB_ICONERROR); result := false; Exit; end; dummy := ''; sh := OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS); if (sh = 0) then begin MessageBox(0,Pchar('OpenSCManager : '+SyserrorMessage(GetLastError)),'Error Handling',MB_ICONERROR); result := false; Exit; end; aPath := Pchar(DriverPath); DriverName := Pchar(ExtractFileName(DriverPath)); rh :=CreateService(sh, DriverName, DriverName, SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, aPath, nil, nil, nil, nil, nil); if (rh=0) Then begin if GetLastError = ERROR_SERVICE_EXISTS Then begin MessageBox(0,'Service existiert schon!','Error Handling',MB_ICONERROR); rh := OpenService(sh, Pchar(Drivername),SERVICE_ALL_ACCESS); if (rh=0) Then begin MessageBox(0,Pchar('Vorhandener Service kann nicht geöffnet werden! : ' + SysErrorMessage(GetLastError)),'Error Handling',MB_ICONERROR); CloseServiceHandle(sh); result := false; Exit; end; end else begin MessageBox(0,'Fehler beim erstellen des Services!','Error Handling',MB_ICONERROR); CloseServiceHandle(sh); result := false; Exit; end; end; if not (rh=0) Then begin if not StartService(rh,0,dummy) Then begin if GetLastError = ERROR_SERVICE_ALREADY_RUNNING Then begin MessageBox(0,'Service läuft schon!','Error Handling',MB_ICONINFORMATION); result := True; end else begin MessageBox(0,Pchar('Service lässt sich nicht starten: ' + SysErrorMessage(GetLastError)),'Error Handling',MB_ICONERROR); CloseServiceHandle(rh); CloseServiceHandle(sh); result := false; Exit; end; end; result := True; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz