![]() |
Re: Herausfinden ob ein bestimmter Service installiert ist
Delphi-Quellcode:
uses
WinSvc; type TAnswer = (aUnknown, aYes, aNo); function IsServiceInstalled(const MachineName, ServiceName: string; ServiceType: DWORD = SERVICE_DRIVER or SERVICE_WIN32; ServiceState: DWORD = SERVICE_STATE_ALL): TAnswer; const MAX_SERVICE_NAME = 256; MAX_DISPLAY_NAME = 256; type PEnumServiceStatusBuffer = ^TEnumServiceStatusBuffer; TEnumServiceStatusBuffer = record EnumService: TEnumServiceStatus; ServiceName: array [0..MAX_SERVICE_NAME-1] of Char; DisplayName: array [0..MAX_DISPLAY_NAME-1] of Char; end; var SCManager: SC_HANDLE; EnumBuffer: array [0..7] of TEnumServiceStatusBuffer; // ~4KB Stack size BytesNeeded: DWORD; ResumeHandle: DWORD; ServicesReturned: DWORD; Service: PEnumServiceStatus; Index: DWORD; begin Result := aUnknown; SCManager := OpenSCManager(PChar(MachineName), SERVICES_ACTIVE_DATABASE, SC_MANAGER_ENUMERATE_SERVICE); if (SCManager <> 0) then try Result := aNo; ResumeHandle := 0; while EnumServicesStatus(SCManager, ServiceType, ServiceState, EnumBuffer[0].EnumService, SizeOf(EnumBuffer), BytesNeeded, ServicesReturned, ResumeHandle) or (GetLastError = ERROR_MORE_DATA) do begin Service := @EnumBuffer[0].EnumService; for Index := 1 to ServicesReturned do begin if (StrIComp(PChar(ServiceName), Service.lpServiceName) = 0) then begin Result := aYes; Break; end; Inc(Service); end; if (Result = aYes) then Break; if (ResumeHandle = 0) then Break; end; finally CloseServiceHandle(SCManager); end; end; procedure TForm1.Button1Click(Sender: TObject); begin case IsServiceInstalled(EmptyStr, 'Messenger') of aUnknown: ShowMessage('Vielleicht.'); aYes: ShowMessage('Scheint so.'); aNo: ShowMessage('Wohl nicht.'); else ShowMessage('Hmmm.'); end; end; |
Re: Herausfinden ob ein bestimmter Service installiert ist
Danke Nico! Das spart mir Zeit :zwinker:
|
Re: Herausfinden ob ein bestimmter Service installiert ist
Zitat:
ich hab lediglich die frage von sakura beantwortet! ich würds nochmals durchlesen |
Re: Herausfinden ob ein bestimmter Service installiert ist
Danke an Nico und die Beteiligten
Es funzt :) aber nochmal... ich hab nicht gewartet das mir einer den code hinfözelt nei nein.. das habt ihr falsch verstanden. ich habe nix dergleichen verlauten lassen, also bitte nicht alle Foren User in den gleichen Topf werfen. Habe in der Zwischenzeit nämlich im Internet geforscht und ähnliche Funktionen aufgetrieben... war also nicht untätig wie mir der Mephistopheles unterstellen will... amen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 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