View Full Version : [WINDOWS non .NET] controllare se un servizio è installato
blackskop
18-11-2008, 14:11
Ciao a tutti. Come posso verificare se un servizio è stato installato? Mi servirebbe un programmino che mi restituisca true o false (oppure 0 o 1) a seconda se il nome di un servizio passato in input è presente tra i servizi installati. Questo programmino non deve essere scritto utilizzando .NET
variabilepippo
18-11-2008, 14:36
Puoi sfruttare la tecnologia WMI o interagire direttamente con il Service Control Manager (http://msdn.microsoft.com/en-us/library/ms685150(VS.85).aspx).
blackskop
18-11-2008, 15:02
Puoi sfruttare la tecnologia WMI o interagire direttamente con il Service Control Manager (http://msdn.microsoft.com/en-us/library/ms685150(VS.85).aspx).
Puoi fare qualche esempio in visual basic o delphi?
variabilepippo
18-11-2008, 15:10
Cerca la documentazione relativa alle 2 tecniche, troverai anche una marea di esempi... L'interazione con SCM non richiede prerequisiti particolari (basta invocare le funzioni nel modo corretto), per controllare i servizi tramite WMI fai riferimento a Win32_ServiceControl Class (http://msdn.microsoft.com/en-us/library/aa394419(VS.85).aspx) e Win32_Service Class (http://msdn.microsoft.com/en-us/library/aa394418(VS.85).aspx).
blackskop
18-11-2008, 15:22
Cerca la documentazione relativa alle 2 tecniche, troverai anche una marea di esempi... L'interazione con SCM non richiede prerequisiti particolari (basta invocare le funzioni nel modo corretto), per controllare i servizi tramite WMI fai riferimento a Win32_ServiceControl Class (http://msdn.microsoft.com/en-us/library/aa394419(VS.85).aspx) e Win32_Service Class (http://msdn.microsoft.com/en-us/library/aa394418(VS.85).aspx).
Posso utilizzare SCM partendo da un ogggetto OLE (che comunque devo ricavarmi)?
Oppure se sai lanciare una command line (al limite anche un file Batch)
puoi vedere se riesci a parsare il risultato di
SC QUERY
oppure, se sai il nome del servizio da controllare (almeno quello, spero)
SC QUERY Spooler
blackskop
18-11-2008, 19:25
Grazie lo stesso ragazzi, ho scoperto che SCM inserisce qui
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
tutte le info sui servizi installati ;)
Ciao a tutti. Come posso verificare se un servizio è stato installato? Mi servirebbe un programmino che mi restituisca true o false (oppure 0 o 1) a seconda se il nome di un servizio passato in input è presente tra i servizi installati. Questo programmino non deve essere scritto utilizzando .NET
Si può fare velocemente in VB6, e riadattato, anche per VBA ( può girare dentro un Foglio di Excel ).
Questo codice da la lista dei servizi trovati nel sistema + il loro attuale stato.
Tutto ciò che serve è un pulsante ( cmd_listaservizi ) e una ListBox ( List1 ) :
Private Sub cmd_listaservizi_Click()
Dim servizi As Object
Dim servizio As Object
Dim stato As String
Set servizi = GetObject("winmgmts:").ExecQuery("SELECT Name from Win32_Service")
For Each servizio In servizi
Dim shellApp As Object
Set shellApp = CreateObject("Shell.Application")
If shellApp.IsServiceRunning(servizio.Name) = True Then
stato = "Servizio Attivo"
Else
stato = "Servizio Non Attivo"
End If
List1.AddItem (servizio.Name) & " - Stato : " & stato
Set shellApp = Nothing
Next
Set servizio = Nothing
Set servizi = Nothing
End Sub
E il gioco è fatto. ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.