cs_olden
Messages postés38Date d'inscriptionmardi 31 juillet 2007StatutMembreDernière intervention 9 janvier 2008
-
16 août 2007 à 08:58
cs_olden
Messages postés38Date d'inscriptionmardi 31 juillet 2007StatutMembreDernière intervention 9 janvier 2008
-
16 août 2007 à 11:16
Bonjour,
J'utilise le WMI afin delancer des process sur un poste distant, sauf que mon process apparait bien dans le gestionnaire des tâches, mais la fenêtre n'apparait pas. Je pense qu'il me manque un paramètre, mais je ne sais pas lequel?
String ComputerName = "MonPC";
ManagementOperationObserver observer = new ManagementOperationObserver();
ConnectionOptions LaConnexion = new ConnectionOptions();
System.Management.ManagementScope MonCanal = new System.Management.ManagementScope("\\\" + ComputerName + "\\root\\cimv2");
ManagementPath path = new ManagementPath("Win32_Process");
ManagementClass processClass = new ManagementClass(MonCanal, path, null);
//on crée un objet pour passer les paramétres
object[] methodArgs = { "notepad"};
//On exécute
processClass.InvokeMethod(observer, "Create", methodArgs);
Merci
A voir également:
Il n'y a pas de processus à l'autre extrémité du canal
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 16 août 2007 à 09:32
c'est normal..! enfin... tu vas comprendre !
pour qu'un process ouvre une fenêtre, il faut qu'il soit lancer dans le même contexte que l'utilisateur connecté.
Donc, si toto est connecté à la machine, il faut que le process soit lancé par toto dans sa session...
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 16 août 2007 à 09:36
Salut,
Logiquement il n'est pas possible de lancer un processus intéractif avec l'utilisateur "courant", qu'il soit connecté sur la console ou en terminal server.
cs_olden
Messages postés38Date d'inscriptionmardi 31 juillet 2007StatutMembreDernière intervention 9 janvier 2008 16 août 2007 à 10:47
Ha... je viens finallement, à la suite de ta réponse,de me rendre compte que ca ne pouvait pas marcher, car
System.Diagnostics.Process.GetProcessesByName("C:\\windows\\notepad.exe","monPC"); va vérifier si notepad tourne sur "monPC", mais ne donne en rien les valeur "notepad" et "monPC" à ma variable que je vais utiliser avec myprocess.Start(); ?
Sinon ta réponse fonctionne, mais quand j'exécute ma fonction, j'ai le message: L'index se trouve en dehors des limites du tableau. en me soulignant la ligne: myProcess = myProcesses[0];
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 16 août 2007 à 10:54
Parce que tu n'a pas vérifier qu'il y avait au moins un élément dans myProcesses....
Cela dit je te donnais juste la réponse a ta question pour "convertir" ton tableau en process, mais ce bout de code ne résoudra visiblement pas ton problème...
<hr size="2" width="100%" />
Working as designed +
cs_olden
Messages postés38Date d'inscriptionmardi 31 juillet 2007StatutMembreDernière intervention 9 janvier 2008 16 août 2007 à 10:55
En réalité, je veux lancer un processus, mais j'ai l'impression qu'il n'y a pas d'API sous visual qui permet de lancer un programme sur un poste distant.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 16 août 2007 à 11:01
C'est donc que le tableau est vide, comme l'a dit Nikoui, il faut tester.
Et lire la doc de Process.GetProcessesByName pour savoir quoi passer exactement au paramètre processName.
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 16 août 2007 à 11:02
Coq t'a fournis une solution pour faire ce que tu veux. Cela dit, si ce n'est "a priori" pas possible, c'est pour des raisons de sécurité...
Le plus simple a mon avis est donc d'installer volontairement une deuxieme appli sur le poste distant, que tu pilotera a distance et qui se chargera de faire ce que tu veux. Mais cette solution implique une installation sur le poste distant, et donc l'accord de l'utilisateur en question... tout dépend donc de ce que tu veux faire et de la raison pour laquelle tu veux le faire.
<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 16 août 2007 à 11:07
Le "problème" est plus le fait que les APIs Windows ne prévoient pas (enfin, pas à ma connaissance) de lancer un processus distant en intéractif, pas de ne pas en lancer du tout (cf l'outil psexec de Sysinternals)
Déjà celà apporte en effet un côté sécurité, mais ce n'est pas à mon avis la principale raison : en général ce genre de chose sert pour des tâches administratives, et dans ce contexte le GUI n'est pas un élément crucial à prendre en compte, car inexistant.
Si tu veux faire un lanceur d'applications centralisé, tu risques de devoir revoir l'architecture de ton application.
cs_olden
Messages postés38Date d'inscriptionmardi 31 juillet 2007StatutMembreDernière intervention 9 janvier 2008 16 août 2007 à 11:11
C'est pour surveiller des process qui tournent sur des serveurs (a partir d'un autre serveur, qui a donc les droits admin sur les autres serveurs), et les consignes que j'ai: ne rien installer sur les serveurs (c'est pas cool, surtout que le dev, c'est pas mon métier)
cs_olden
Messages postés38Date d'inscriptionmardi 31 juillet 2007StatutMembreDernière intervention 9 janvier 2008 16 août 2007 à 11:16
Ha mince, j'ai posté trop vite:
j'ai essayé Psexec qui est très bien, j'était content, sauf que au moment où je suis passé au test sur l'appli de prod (et non plus notepad), c'est là que j'ai été dégouté car je me suis rendu compte qu'il ne l'ouvrait pas avec l'utilisateur courant (donc pas les droits: répertoire, BDD, ...)