Process et services

Résolu
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010 - 7 juil. 2006 à 13:33
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010 - 10 juil. 2006 à 14:39
Salut à tous,

comment peut-on récupérer les processus actifs et les services sur un poste distant ?

merci d'avance.

Swan94

10 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
7 juil. 2006 à 14:56
Salut,
Pour les processus tu peux les récupérer avec la classe Process.
Tu as juste à renseigner l'ip ou le nom du pc à joindre.

Exemple.
For
Each
p
As
Process
In
Process.GetProcesses(
"xxx.xxx.xxx.xxx"

)
   MessageBox.Show(p.ProcessName)


Next

Pour les services idem utilise la classe ServiceController (ajoute à ton projet la référence à l'assembly System.ServiceProcess)

Exemple:


For



Each

s

As

ServiceProcess.ServiceController

In

ServiceProcess.ServiceController.GetServices(

"xxx.xxx.xx.xxx"


)
   MessageBox.Show(s.ServiceName)



Next
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
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)

   
   If (bret =
False)
Then
Exit
Sub

   'Dévérouille
   bret = UnlockServiceDatabase(idLock)

   If (bret =
False)
Then
Exit
Sub

   'Libèration
   CloseServiceHandle(hOwnSvc)
   CloseServiceHandle(hSvc)

End
Sub
3
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010
7 juil. 2006 à 16:41
Ca ne marche pas. Ai-je fait une connerie ou est-ce dû au fait que j'utilise la vers.2005 ?

merci

Swan94
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
7 juil. 2006 à 17:39
Testé sous 2003 et sous 2005.
Mais si sa ne marche pas le mieux c'est de nous donner l'erreur que tu obtiens.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010
9 juil. 2006 à 16:16
Autant pour moi ça marche nickel. Tu m'as vraiment beaucoup aidé.

Swan94
0
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010
9 juil. 2006 à 16:17
Mais saurais tu comment activer un service à distance ?

Swan94
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
9 juil. 2006 à 18:52
Salut,
Oui si tu connais le nom de ton service. Tu fournis comme paramètres au constructeur le nom de ton service et la machine.

Dim sc
As
New ServiceController(
"ton service",
"xxx.xxx.xxx.xxx")
sc.Start()
0
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Derniè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é.

Merci

Swan94
0
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010
10 juil. 2006 à 12:21
J'ai trouvé il faut que le demarrage soit en automatique mais est-il possible de changer le type de démarrage ?

Swan94
0
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010
10 juil. 2006 à 14:39
Un grand merci à toi pour ton aide précieuse.

Swan94
0
Rejoignez-nous