![]() |
Remote Services listen / neuen Dienst installieren
Hi!
Kann mir jemand erklären, wie ich
![]() *KRO |
Re: Remote Services listen / neuen Dienst installieren
Weiß keiner wie das geht? :cry:
Ich bräuchte das ziemlich dringend... *KRO |
Re: Remote Services listen / neuen Dienst installieren
*push*
[edit=sakura] :warn: Wortwahl das nächste Mal etwas glücklicher treffen ;) Mfg, sakura[/edit] [Edith kommt in den Post] Na so schlimm war das aber nich... Eher ein Ausdruck meiner Verzweiflung ;) [/Edith verlässt uns wieder] |
Re: Remote Services listen / neuen Dienst installieren
Die Unit in folgendem Beitrag sollte helfen:
![]() ...:cat:... P.S.: :hi: |
Re: Remote Services listen / neuen Dienst installieren
Moin KRO,
ich hab' hier mal ein Beispiel, wie das geht, aus einem Programm extrahiert:
Delphi-Quellcode:
[EDIT]
type
// für selbstimportierte Funktion erforderlich PENUM_SERVICE_STATUS = ^TEnumServiceStatus; // Funktion selber importieren, da die Borland Version nur den ersten zugreifbar macht function EnumServicesStatus( const hSCManager : DWord; // handle to SCM database const dwServiceType : DWord; // service type const dwServiceState : DWord; // service state const lpServices : PENUM_SERVICE_STATUS; // status buffer const cbBufSize : DWord; // size of status buffer const pcbBytesNeeded : PDWORD; // buffer size needed const lpServicesReturned : PDWord; // number of entries returned const lpResumeHandle : PDWord // next entry ) : Boolean; stdcall; external 'advapi32.dll' name 'EnumServicesStatusA'; implementation {$R *.DFM} procedure EnumServices(const AsComputerName : string); var hSCDB : DWORD; pStatus : PENUM_SERVICE_STATUS; pWork : PENUM_SERVICE_STATUS; cbBufSize : DWORD; pcbBytesNeeded : DWORD; lpServicesReturned : DWORD; lpResumeHandle : DWORD; iCount : integer; begin Form1.ListBox1.Items.Clear; hSCDB := OpenSCManager( PChar('\\'+AsComputerName), // Dienste des angegebenen Rechners auslesen nil, // Standarddatenbank nehmen SC_MANAGER_ENUMERATE_SERVICE // Dienste aufzählen (alle durchgehen) or // ausserdem GENERIC_READ); // genügt es die Daten nur zu lesen if hSCDB <> 0 then begin try // Erforderlichen Speicherplatz für alle Daten von der Funktion ermitteln lassen // ==> gezielt mit 0 Byte Buffer fehlschlagen lassen cbBufSize := 0; pStatus := nil; lpResumeHandle := 0; EnumServicesStatus(hSCDB,SERVICE_WIN32,SERVICE_STATE_ALL,pStatus,cbBufSize,@pcbBytesNeeded,@lpServicesReturned,@lpResumeHandle); lpResumeHandle := 0; // speicher reservieren pStatus := AllocMem(pcbBytesNeeded); try cbBufSize := pcbBytesNeeded; EnumServicesStatus( hSCDB, // Handle von OpenSCManager SERVICE_WIN32, // Nur Dienste, keine Treiber SERVICE_STATE_ALL, // Alle installierten Dienste, egal ob sie laufen oder nicht pStatus,cbBufSize,@pcbBytesNeeded,@lpServicesReturned,@lpResumeHandle); // Adresse merken, damit der Speicher später wieder freigegeben werden kann, ohne den Pointer // wieder zurückrechnen zu müssen pWork := pStatus; // Alle Dienste in Listbox anzeigen (mit Namen und Anzeigenamen) for iCount := 1 to lpServicesReturned do begin Form1.ListBox1.Items.Add(pWork.lpServiceName+'/'+pWork.lpDisplayName); inc(pWork); end; finally if Assigned(pStatus) then FreeMem(pStatus,pcbBytesNeeded); end; finally CloseServiceHandle(hSCDB); end; end; end; Nicht die vergessen die Unit winsvc mit einzubinden [/EDIT] |
Re: Remote Services listen / neuen Dienst installieren
Cool. Thanx erstma.
Heut hab ich keine Zeit mehr. Werds morgen mal ausprobieren. *KRO |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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