Comment écrire un script vbs dans un fichier .vbs en c# ?
Dodo299
Messages postés11Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention23 février 2009
-
5 août 2008 à 22:09
Dodo299
Messages postés11Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention23 février 2009
-
8 août 2008 à 00:34
Bonjour,
Je débute dans le c#.
Je suis en train de développer une application qui permettra de se connecter à ses répertoires personnels (Situés sur le serveur d'un domaine) sans se connecter au domaine, juste en se branchant au réseau.
Pour le faire, c'est super simple, il suffit d'écrire un petit script en .vbs puis de l'exécuter.
Seulement, pour plus de simplicité j'ai créé une application en C# avec des champs "Utilisateur", "Domaine", "Mot de Passe", "Serveur"... de façon à les remplir simplement, puis de cliquer sur un bouton pour lancer le script .vbs avec les informations précédemment entrés.
Le script, je l'ai et il fonctionne
L'application est terminée et fonctionne
Comme je l'ai dit plus haut, on rentre nos informations grâce à mon appli en C# puis, mon appli écrit un fichier en .vbs avec nos infos, (comme ça, pas besoin de trifouiller le script vbs à la main :) ). Pour le faire j'ai rentré le code vbs dans mon application, et intégré des variables pour remplacer les valeurs telles que "Utilisateur"... Mais le problème (Car il y en a bien un) c'est que Visual Studio interprète certaines parties du code vbs comme étant du code utilisable dans mon application. Alors que je veux seulement écrire ces valeurs sous forme de texte.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 5 août 2008 à 23:42
Mouais effectivement, je ne sais pas si c'est la meilleure façon de faire...
Pour ton problème, il faut échapper les caractères spéciaux avec \ ou alors s'amuser avec [mailto:'@' '@'] (mettre devant les strings)
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 6 août 2008 à 11:56
J'avais meme pas vu que ton programme ecrivais seulement sur le disque.
Tu peux faire un truc du genre
sw.WriteLine(@"Dim objNetwork , UserObj, colDrives, i, strUserName
Set objNetwork = WScript.CreateObject("WScript.Network")
Unmap existing drives
Set colDrives = objNetwork.EnumNetworkDrives
On Error Resume Next
If colDrives.Count<>0 Then
For i=0 To colDrives.Count-1 Step 2
objNetwork.RemoveNetworkDrive colDrives(i),"True","True"
Next
End If ...");
Pour gérer le l'ecriture avec le @
Ce que je penses c'est qu'il est possible de passer des parametres (ceux de l'IHM) a un process.start
et ton fichier vbs est generique sur ton dur pas besoin de le refaire a chaque fois
Et le process Start lance l'application vbs.
Apres le plus dur c'est de récupérer les infos (erreurs + log dans la console ou autre) si il y a du script vbs.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Dodo299
Messages postés11Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention23 février 2009 6 août 2008 à 21:40
Alors, j'ai testé le double " mais ça ne fonctionne pas.
A mon avis, parti comme je suis parti, ça ne fonctionnera pas, puisque j'écris des valeurs que l'interpréteur interprète (Bah, oui, c'est son boulot quand même :P ) comme des commandes C#, alors qu'il ne devrait pas en tenir compte, et simplement les écrire dans le fichier texte.
Donc, il me reste la solution de [auteur/NHERVAGAULT/84425.aspx nhervagault]qui est de faire appel à un fichier .vbs externe (Que j'aurais créé auparavant). Ok, pas de problème, je sais comment faire :)
Seulement, j'ai toujours mon problème de modification du nom d'utilisateur et du mot de passe (Et encore d'autres, mais si je sais modifier le nom d'utilisateur, ça ira nickel pour le reste :) )
Donc, je fais appel à un process.Start pour lancer mon .vbs mais il faut en modifier le contenu avant, de façon à y intégrer le nom de l'utilisateur et le mot de passe.
Donc, ce qu'il me faudrait, c'est pouvoir modifier une valeur précise d'une ligne précise dans mon fichier .vbs depuis mon application.
Donc, j'ai créé deux textBox dans mon application, "userName" et "userPwd". Il faut maintenant que je créé une fonction (en C#, naturellement lol :P ) qui entre dans mon fichier .vbs le contenu des deux textBox "userName" et "userPwd" à des endroits précis
( En l'occurence les deux valeurs nom et pass dans le script :
strUserName="nom"
strPassword="pass"
)
Et c'est là que s'arrêtent mes connaissances :/
En cherchant avec l'aide de mon ami Google, j'ai vu que c'est possible avec le xml. Mais les fichiers texte ?
Dodo299
Messages postés11Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention23 février 2009 7 août 2008 à 19:22
Bonjour :)
Alors j'ai testé la première méthode (Celle de Bidou) qui fonctionne super. Mon script est généré, et exécutable.
Par contre, vous avez une méthode pour écrire en codage ANSI ? J'ai trouvé comment faire, mais le codage ANSI n'est pas supporté, et j'ai trouvé une manière, mais elle me parait un peu farfelue :/
Si vous avez une idée Merci beaucoup
PS: Ne vous inquiétez pas, c'est la dernière question que je pose :lol: Mon appli est quasiment finalisée
Dodo299
Messages postés11Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention23 février 2009 7 août 2008 à 22:43
Béé ça fonctionne pour L'UTF8, UTF32, UTF7, Unicode, ASCII ...
mais les noms : System.Text.Encoding ; Encoding.... ne contiennent pas de définition pour "ANSI"
Donc ce que je comprends, c'est que ces méthodes ne permettent pas d'écrire en ANSI.
Faut que je trouve autre chose. Domage que mon script vbs doive être écrit en ANSI :/
Dodo299
Messages postés11Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention23 février 2009 8 août 2008 à 00:34
Oui, j'avais trouvé cette source, il y'en avait une autre du même auteur, d'ailleurs. Mais je ne me suis pas encore penché à fond dessus. Pour le moment je règles d'autres choses sur l'appli :)