Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Treiber installieren, starten, stoppen, deinstallieren (https://www.delphipraxis.net/53496-treiber-installieren-starten-stoppen-deinstallieren.html)

Olli 18. Sep 2005 21:29

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:

Neotracer64 18. Sep 2005 22:08

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.
Seite 3 von 3     123   

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