cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 10 juil. 2006 à 13:39
Oui il est possible, c'est une traduction d'un code C# que j'avais. Donc pas testé en vb.
Exemple d'utilisation (xxx.xxx... = ip de ta machine distante):
ServiceAuto(NomDeTonService,xxx.xxx.xxx.xxx)
Déclaration:
Public
Declare
Unicode
Function OpenSCManager
Lib
"advapi32.dll"
Alias
"OpenSCManagerW" (
ByVal machineName
As
String,
ByVal databaseName
As
String,
ByVal dwAccess
As
UInteger)
As IntPtr
Public
Declare
Auto
Function LockServiceDatabase
Lib
"advapi32.dll" (
ByVal hSCManager
As IntPtr)
As IntPtr
Public
Declare
Auto
Function OpenService
Lib
"advapi32.dll" (
ByVal hSCManager
As IntPtr,
ByVal lpServiceName
As
String,
ByVal dwDesiredAccess
As
UInteger)
As IntPtr
Public
Declare
Auto
Function ChangeServiceConfig
Lib
"advapi32.dll" (
ByVal hService
As IntPtr,
ByVal dwServiceType
As
UInteger,
ByVal dwStartType
As
Integer,
ByVal dwErrorControl
As
UInteger,
ByVal lpBinaryPathName
As
String,
ByVal lpLoadOrderGroup
As
String,
ByVal lpdwTagId
As IntPtr,
ByVal lpDependencies
As
String,
ByVal lpServiceStartName
As
String,
ByVal lpPassword
As
String,
ByVal lpDisplayName
As
String)
As
Boolean
Public
Declare
Unicode
Function QueryServiceConfig
Lib
"advapi32.dll" (
ByVal hService
As IntPtr,
ByVal pServiceConfig
As IntPtr,
ByVal cbBufSize
As
Integer,
ByRef pcbBytesNeeded
As
Integer)
As
Boolean
Public
Declare
Auto
Function UnlockServiceDatabase
Lib
"advapi32.dll" (
ByVal ScLock
As IntPtr)
As
Boolean
Public
Declare
Auto
Function CloseServiceHandle
Lib
"advapi32.dll" (
ByVal hSCObject
As IntPtr)
As
Boolean
Const SC_MANAGER_ALL_ACCESS
As
Integer = &HF003F
Const SERVICE_ALL_ACCESS
As
Integer = &HF01FF
Const SERVICE_QUERY_CONFIG
As
Integer = 1
Const SERVICE_NO_CHANGE
As
UInteger = 4294967295
Const SERVICE_AUTO_START
As
Integer = 2
'Mode auto
Const SERVICE_DEMAND_START
As
Integer = 3
'Mode manuel
Const SERVICE_DISABLED
As
Integer = 4
'Mode désactivé
Sub ServiceAuto(
ByVal service
As
String,
ByVal machineOrIp
As
String)
'Ouverture d'une connexion au gestionnaire de service
Dim hSvc
As IntPtr = OpenSCManager(machineOrIp,
Nothing, SC_MANAGER_ALL_ACCESS)
If (hSvc = IntPtr.Zero)
Then
Exit
Sub
'Vérouille la base des services
Dim idLock
As IntPtr = LockServiceDatabase(hSvc)
If (idLock = IntPtr.Zero)
Then
Exit
Sub
'Ouverture du service
Dim hOwnSvc
As IntPtr = OpenService(hSvc, service, SERVICE_ALL_ACCESS)
If (hOwnSvc = IntPtr.Zero)
Then
Exit
Sub
'Applique la modif - Mode de démarrage automatique SERVICE_AUTO_START
Dim bret
As
Boolean = ChangeServiceConfig(hOwnSvc, SERVICE_NO_CHANGE, SERVICE_AUTO_START, SERVICE_NO_CHANGE,
Nothing,
Nothing, IntPtr.Zero,
Nothing,
Nothing,
Nothing,
Nothing)
swan94
Messages postés254Date d'inscriptionjeudi 29 juillet 2004StatutMembreDernière intervention 2 avril 2010 10 juil. 2006 à 11:12
Là je suis désolé mais ça n'a pas voulu marcher, il fait comme s'il avait marché mais lorsque j'explore les services, il marque manuel mais pas démarré.