Lister les services + infos + pause/stop/start + changement de type de demarrage (méthode : api enum et registre)

Description

Ce code a pour but de lister tout les services du système et de donner pas mal d'informations à leur sujet.
OK, existe déjà sur VBfrance, mais c'est le seul (après une recherche rapide) qui donne tant d'infos.

La méthode utilisée : API pour le listing (pas de WMI), et récupération d'infos dans le registre.

MAJ1 : code meilleur (grâce à Renfield) et plus de bug à la compilation en natif
MAJ2 : possibilité de mettre en pause/reprendre, de stopper, de shutdown et de démarrer un service
MAJ3 : possibilité de changer le type de démarrage (Automatique, Manuel, Désactivé), ce qui permet désormais de lancer n'importe quel service uniquement depuis l'executable du projet.

Les différentes actions sont obtenues par le click droit sur le listview.

Un grand merci à Renfield qui a pris le temps de corriger cette source ^_^

Source / Exemple :


'APIs principales

'ouvre le Service Control Manager
Private Declare Function OpenSCManager Lib "advapi32.dll" Alias "OpenSCManagerA" (ByVal lpMachineName As String, ByVal lpDatabaseName As String, ByVal dwDesiredAccess As Long) As Long
'pour l'énumération
Private Declare Function EnumServicesStatus Lib "advapi32.dll" Alias "EnumServicesStatusA" (ByVal hSCManager As Long, ByVal dwServiceType As Long, ByVal dwServiceState As Long, lpServices As Any, ByVal cbBufSize As Long, pcbBytesNeeded As Long, lpServicesReturned As Long, lpResumeHandle As Long) As Long
'ferme le handle d'un service ouvert
Private Declare Function CloseServiceHandle Lib "advapi32.dll" (ByVal hSCObject As Long) As Long
'démarre un service
Private Declare Function StartService Lib "advapi32.dll" Alias "StartServiceA" (ByVal hService As Long, ByVal dwNumServiceArgs As Long, ByVal lpServiceArgVectors As Long) As Long
Private Declare Function OpenService Lib "advapi32.dll" Alias "OpenServiceA" (ByVal hSCManager As Long, ByVal lpServiceName As String, ByVal dwDesiredAccess As Long) As Long
'permet des actions sur un service
Private Declare Function ControlService Lib "advapi32.dll" (ByVal hService As Long, ByVal dwControl As Long, lpServiceStatus As SERVICE_STATUS) As Long
'change les paramètres du service
Private Declare Function ChangeServiceConfig Lib "advapi32.dll" Alias "ChangeServiceConfigA" (ByVal hService As Long, ByVal dwServiceType As Long, ByVal dwStartType As Long, ByVal dwErrorControl As Long, ByVal lpBinaryPathName As String, ByVal lpLoadOrderGroup As String, lpdwTagId As Long, ByVal lpDependencies As String, ByVal lpServiceStartName As String, ByVal lpPassword As String, ByVal lpDisplayName As String) As Long

'le reste dans le *.zip, avec un exemple

Conclusion :


Voilà, un bout de code en plus. Peut être un jour le projet en entier ;)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.