Management Class Generator

Signaler
Messages postés
16
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
9 février 2005
-
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
-
Pour mon projet actuel, je cherche a lancer depuis mon application des process independants sur des machines distantes. Pour cela, j ai trouve le Management Class Generator (Mgmtclassgen.exe) qui permet de creer une classe managee.

Ainsi je peux par exemple lancer un process sur ma machine, en local.

En cherchant un peu sur la doc msdn (
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cptools/html/cpgrfmanagementstronglytypedclassgeneratormgmtclassgenexe.asp
), j ai trouve qu on pouvait creer un tel objet pour une machine
distante (option /m), mais je suis incapable de lancer une appli sur cette machine.
Le process lance se lance toujours sur ma machine en local, et j ai
bien l impression que le fichier cree avec Mgmtclassgen.exe ne change pas lorsque je lui specifie une machine distante ou non...

Quelqu un peut il m eclairer sur mon probleme?

4 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
je crois plutot que cette option permet de generer le code pour une classe WMI presente sur la machine visée (comme si tu executait mgmclassgen sur la machine en question)
mais en aucun cas de lancer un process sur cette machine

Cocoricoooooooo !!!!
Messages postés
16
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
9 février 2005

Ah! Ca ca m arrange pas du tout du tout...

Et y a t il un moyen alors de lancer simplement un process sur une machine distante??

Et merci pour la rapidite de la reponse precedente Coq ;))
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
de rien :)

pour la 2eme question je n'en ai aucune idée, mais la reponse m'interresse aussi, juste par curiosité ^^

Cocoricoooooooo !!!!
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Oui c'est possible toujorus grâce a WMI et WBEM si on a les droits nécessaires sur la machien distante.

Voici un exemple en script :

Dim UserName
Dim Password
Dim ServerFile
Dim WorkStationName
Dim Command
Dim fso
Dim infile

Password=YourPassword
UserName=YourUsername
ServerName=TheMachine to run in on

Command=command you want to run
Result=RunScript(ServerName,Command,UserName,Password)

Function RunScript(Server,nCommand,nUsername,nPassword)
     On Error Resume Next
     Set Service = ConnectServer(Server,nUsername,npassword)
     Set Proc= Service.Get("Win32_Process")
     Dim PID
     result=Proc.create(nCommand,Null,Null,Pid)

Select Case result
     Case 0
          Message="Successful completion "
     Case 2
          Message="Access denied"
     Case 3
          Message="Insufficient privilege"
     Case 8
          Message="Not enough storage is available to process this command"
     Case 9
          Message="Path not found"
     Case 21
          Message="Invalid parameter"
     Case else
          Message="Unknown error"
End Select 
RunScript=Message
End Function

Function ConnectServer(sServer,sUser,sPassword)
On Error Resume next
  Set objLocator = CreateObject("WbemScripting.SWbemLocator")
  'Connect to the namespace which is either local or remote
  Set objService = objLocator.ConnectServer (sServer,"root\cimv2", sUser, sPassword)
  ObjService.Security_.impersonationlevel = 3
  
  Select Case Err.Number 
     Case -2147024891
          WScript.Echo "Access is Denied"
          Err.clear
          RunScript=-2
          Exit Function     
     Case -2147217405 
          WScript.Echo "Insufficient Privileges on " & Server
          Err.Clear
          RunScript=-2
          Exit Function
     Case -2147217394 
          WScript.Echo "Invalid Namespace"
          Err.clear
          RunScript=-1
          Exit function
     Case 0
          Set ConnectServer=objService
     Case Else
          WScript.Echo Err.Number & ":" & Err.Description 
          wscript.echo sServer & sUser & sPassword
End Select

End Function


::|The S@ib|::
MVP C#.NET