Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dienst deinstallieren ohne Erfolgsmeldung (https://www.delphipraxis.net/123735-dienst-deinstallieren-ohne-erfolgsmeldung.html)

JonnyGuitar 7. Nov 2008 10:52


Dienst deinstallieren ohne Erfolgsmeldung
 
Servus,

ich versuche per Shellexecute einen Dienst zu deinstallieren. Zuerst stoppe ich ihn mit "net stop servicename".
Danach versuche mit Shellexecute und exename.exe /uninstall den Service zu deinstallieren. Es kommt aber die
Messagebox das der Dienst erfolgreich deinstalliert wurde. Kann man diese Messagebox unterdrücken? Oder gibt es
andere Wege den Dienst zu deinstallieren?


mfg Jonny

Relicted 7. Nov 2008 10:57

Re: Dienst deinstallieren ohne Erfolgsmeldung
 
Moin,

du könntest den dienst direkt aus der registry löschen.
der ist unter anderen in z.b.:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es
gespeichert. such einfach mal in der reg nach dem exe namen des services. so haste gar keine meldung mehr die du unterdrücken müsstest.

gruß
reli

gsh 7. Nov 2008 11:55

Re: Dienst deinstallieren ohne Erfolgsmeldung
 
Zitat:

Zitat von Relicted
Moin,

du könntest den dienst direkt aus der registry löschen.
der ist unter anderen in z.b.:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es
gespeichert. such einfach mal in der reg nach dem exe namen des services. so haste gar keine meldung mehr die du unterdrücken müsstest.

gruß
reli

DAS würde ich auf keinen Fall machen!

@JonnyGuitar: Schreib einfach noch ein /silent dazu ... dann sagt er nichts ;)

Union 7. Nov 2008 12:06

Re: Dienst deinstallieren ohne Erfolgsmeldung
 
Ja genau. Wenn man nicht genau weiss wie es geht wird an der Registry rumgefrickelt. Besser wäre man hielte sich an die Dokumentation, dann käme vielleicht so etwas raus (ist aber nur ein Vorschlag):
Delphi-Quellcode:
procedure UninstallService(ServiceName: pchar);
var
  SCManager: SC_HANDLE;
  Service: SC_HANDLE;
begin
  SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  if SCManager = 0 then Exit;
  try
    Service := OpenService(SCManager, ServiceName, SERVICE_ALL_ACCESS);
    ControlService(Service, SERVICE_CONTROL_STOP, Status);
    DeleteService(Service);
    CloseServiceHandle(Service);
  finally
    CloseServiceHandle(SCManager);
  end;
end;

JonnyGuitar 7. Nov 2008 12:44

Re: Dienst deinstallieren ohne Erfolgsmeldung
 
Vielen Dank für die Antworten.

@gsh & Union: Klappt beides wunderbar :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 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