Utilisation de scripts vbs avec C# / Accès à distance via c$ avec C#

digitalseb Messages postés 8 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 16 janvier 2006 - 10 janv. 2006 à 09:19
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007 - 16 janv. 2006 à 17:18
Bonjour,

Je développe actuellement une application en langage C#, permettant d'effectuer diverses taches d'administration à distance au sein du réseau d'une entreprise, à partir d'un poste de contrôle vers les autres machines du réseau. Par exemple pour des raisons de place et de sécurité, cette application doit permettre à l'administrateur d'effacer automatiquement par pression sur un bouton les contenus des dossiers temp, cookies etc et chaque pc du réseau.
J'ai réussi à faire un script permettant par son exécution d'effacer le contenu d'un dossier mis en paramètre sur un ordinateur cible du réseau (à partir du poste d'administration via un accès c$), mais je l'ai fait en vbs car je ne trouvais pas comment faire un tel script en C#, et mon problème maintenant est d'intégrer ce script dans mon code C#... J'ai donc cherché comment je pourrais transcrire mon script vbs en C# mais ce dernier langage semble très très peu utilisé de cette façon ; j'ai également envisagé un autre moyen : simplement utiliser mes scripts vbs dans mon application C#, c'est-à-dire que le code inclu dans l'appli elle-même ne serait qu'une exécution d'un script externe, mais je ne sais pas comment faire surtout qu'il y a le paramètre "nom de la machine cible du réseau" qui est fixé dans l'appli et qui doit être pris en compte par le script vbs...
Voilà j'espère que mon énoncé est clair, si quelqu'un pouvait m'apporter son aide je lui en serait vraiment reconnaissant..
merci

11 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
10 janv. 2006 à 09:30
tu devrais regarder cette méthode :

System.Diagnostics.Process.Start();

elle contient tout ce dont tu as besoin.

Sébastien FERRAND
[MVP C#]
0
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
10 janv. 2006 à 11:28
Le VBScript est obsolète avec le framework 2.. Tu as tout ce qu'il faut dans le framework pour te permettre de faire ce genre de choses.

Regarde du côté de
System.IO pour l'accès aux fichiers et
System.Environement.SpecialFolder pour acceder aux dossiers de l'utilisateurs

-------------------------
Trambert le vert
0
digitalseb Messages postés 8 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 16 janvier 2006
10 janv. 2006 à 14:42
Merci beaucoup pour ton aide, en effet cette méthode m'a donné une idée : dans mon code C# je vais lancer la création d'un fichier .vbs en écriture dans lequel j'afficherai le script vbs qu'il me faut ; je pense que je pourrai ensuite l'exécuter par un Process.Start()...
en espérant que ça fonctionnera merci encore
0
digitalseb Messages postés 8 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 16 janvier 2006
10 janv. 2006 à 14:59
Merci à toi aussi burcherb mais je vais d'abord tester la première solution qui me paraît la plus simple et je regarderai ensuite ce que tu m'indiques si ce que je fais ne marche pas.
0

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

Posez votre question
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
10 janv. 2006 à 22:53
Sinon rien n'empecher de faire un process.Start en passant à ton vbs en paramètre le chemin de ton pc.

::|The S@ib|::
MVP C#.NET
0
digitalseb Messages postés 8 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 16 janvier 2006
11 janv. 2006 à 14:18
En fait le paramètre que j'utilise est le nom du pc, que l'administrateur du réseau sélectionne dans un combobox de l'interface C# (celui-ci contient en temps réel les noms de tous les pc du réseau connectés) : la question est comment puis-je faire passer ce paramètre qui est initialement dans mon code C# vers mon script vbs qui est un fichier à part...? car dans mon code C# tout ce que je fais pour lancer mon script vbs c'est un Process.Start("suppression.vbs") donc je vois pas à quel moment je peux transmettre le paramètre au script.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
11 janv. 2006 à 14:19
Process.Start("suppression.vbs","paramètres")

Sébastien FERRAND
[MVP C#]
0
digitalseb Messages postés 8 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 16 janvier 2006
13 janv. 2006 à 14:42
Dans ma fonction en C# je mets :
Process.Start("supprCookies.vbs","machine");

j'ai bien vérifié que ma variable "machine" est pas vide à ce moment là, pourtant mon script vbs est incapable de simplement afficher le contenu de cette variable qui est pourtant censée lui être envoyée par la ligne ci-dessus ; cette écriture semble donc ne pas marcher, ou alors faut-il que je mette mon script entier sous la forme d'une fonction pour lui passer le paramètre? il est également à noter que j'ai un 2e paramètre à passer à mon script...l'écriture est-elle alors bien
Process.Start("supprCookies.vbs","machine,utilisateur");
?
0
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
13 janv. 2006 à 16:36
Si tu veux passer une variable en paramètre, ne met pas de guillemets..

-------------------------
Trambert le vert
0
digitalseb Messages postés 8 Date d'inscription mardi 8 novembre 2005 Statut Membre Dernière intervention 16 janvier 2006
16 janv. 2006 à 14:43
J'ai essayé avec Process.Start("supprCookies.vbs", machine) ; au début ça marchait pas, mais cela venait en fait de mon script vbs auquel je n'indiquais pas que la variable 'machine' venait de l'extérieur : j'ai donc instancié dans mon script vbs une variable 'arguments' de type 'WScript.Arguments' qui se comporte comme un tableau qui contient toutes les variables venant de l'extérieur, et maintenant ça marche.
Pourtant mon problème n'est pas vraiment résolu car j'ai 2 variables 'machine' et 'utilisateur' à faire passer à mon script, et cette méthode ne semble pas vouloir accepter de faire passer plus d'une variable :

Process.Start("supprCookies", machine, utilisateur); me renvoie l'erreur 'Aucune surcharge pour la méthode 'Start' ne prend d'arguments '3'
et
ProcessStartInfo startInfo = new ProcessStartInfo("supprCookies.vbs");
startInfo.Arguments = machine, utilisateur;
Process.Start(startInfo);
ne marche pas car le compilateur me réclame un ';' après 'machine' (il veut pas de ma 2e variable quoi).

A noter que ProcessStartInfo startInfo = new ProcessStartInfo("supprCookies.vbs");

startInfo.Arguments = machine;
startInfo.Arguments = utilisateur;
Process.Start(startInfo);
ne marche pas non plus...

Quelqu'un aurait-il une solution? merci beaucoup
0
bucherb Messages postés 412 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 13 août 2007
16 janv. 2006 à 17:18
new ProcessStartInfo("supprCookies.vbs", machine +" "+ utilisateur);

Il faut lui envoyer une chaine de caractère comme paramètre, mais rien ne t'empêche de mettre ce que tu veux dans cette chaine.

-------------------------
Trambert le vert
0
Rejoignez-nous