Discussion: RunAs en Vbs

  1. #1
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    avril 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 341
    Points : 567
    Points
    567

    Par défaut RunAs en Vbs

    Bonjour à tous.

    Je pose ce message pour une question d'ordre "fiabilité de code" en vbs.

    Alors voilà, j'ai besoin de lancer des commandes RunAs en vbs afin de lancer des installations qui nécessitent les droits d'admin, et cela par des utilisateurs n'en ayant pas...

    Le problème, c'est qu'après avoir regardé un peu sur le web les manières de lancer ce runas, il s'avère qu'il n'y a pas moyen de passer le mot de passe du superutilisateur en paramètre de la commande. Il est donc nécessaire d'envoyer un SendKeys du password après le lancement commande.

    Le code ressemble donc à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    objWshShell = WScript.CreateObject("WScript.Shell")
    objWshShell.Run objWshShell.ExpandEnvironmentStrings("%systemroot%") & "\system32\runas.exe" & " Mesparamètres " & " monExe"
    WScript.Sleep 150
    objWshShell.SendKeys "MonPassword" & "~"
    Voilà ma question : Est-ce que cette méthode est fiable ou pas? (Elle est utilisée par JC Bellamy dans son script xrunas.vbs).

    Sinon y a-t-il une autre méthode pour réaliser cette action, d'une meilleure manière?

    Merci de vos réponses.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061

    Par défaut

    En VBS avec le WMI, tu peux te connecter sur un poste distant (ou local, avec l'adresse IP du poste local, vu alors comme le poste distant) en précisant le compte utilisateur et le mot de passe (tout sera dans le code et en clair, et même si tu passes par un fichier cryptée, le code de décryptage sera dans le script).
    Ensuite à partir de là, tu peux agir comme si tu été en local, et par exemple créer un process et l'exécuter pour lancer un installeur.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    avril 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 341
    Points : 567
    Points
    567

    Par défaut

    Merci de ta réponse ced600.

    J'avais pensé à cette solution, mais je n'ai pas d'autre choix que de lancer le script en local sur le poste avec le compte utilisateur car il doit y avoir une interaction entre l'user et le script, par l'intermédiaire de popup.

    J'avais aussi pensé à le lancer par GPO ordinateur ou tâche planifiée, mais le problème est toujours le même.

    Le problème sécurité n'est pas le plus important au niveau de ce script, le truc c'est qu'il va être massivement déployé et il ne peut pas y avoir de code hasardeux.

    D'où ma question "Est-ce que l'utilisation de la commande RunAs de l'objet Shell et d'un sendkey est fiable?"...

    Auriez-vous d'autres suggestions? ou une idée sur la fiabilité de cette solution?

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    février 2006
    Messages
    1 093
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2006
    Messages : 1 093
    Points : 2 920
    Points
    2 920

    Par défaut

    bonjour,
    Est-ce que l'utilisation de la commande RunAs de l'objet Shell et d'un sendkey est fiable?
    non
    mais sauf si tu comptes piloter un missile nucléaire en vbscript, tu peux sans doute accepter une fiablité de 99%...
    ton code est d'ailleurs incomplet puisque l'ami bellamy comme d'autres d'ailleurs sur le net: http://www.tek-tips.com/faqs.cfm?fid=2760
    ont pris soin d'intercaler avant ou après le sleep (plutôt avant) un petit AppActivate pour activer la fenêtre cible
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    avril 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 341
    Points : 567
    Points
    567

    Par défaut

    Oui c'est vrai.
    Cela dit il y a déjà tellement de bordel lors du déploiement sur tous les postes que je préfère que les erreurs viennent pas du programme.

    Sinon, j'ai trouvé l'outil psexec qui permet de faire une install à distance ou en local, mais en passant en paramètre le login ET le mot de passe.

    Donc je pense que je partirai sur cette solution.

    Merci de vos réponses

  6. #6
    Membre actif
    Inscrit en
    mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : mai 2008
    Messages : 189
    Points : 212
    Points
    212

    Par défaut

    j'ai déjà besoin de faire ce genre de manip, et j'avais passé les user et password dans mon script vbs.

    pour ne pas qu'ils soient lus, je les avait compilés grace a l'outil vbs2exe.

    coté script ca change rien (ca décale juste l'index des arguments de 1 mais tu n'en utilise pas dans ton exemple) et c'est pratique.

    enjoy^^

  7. #7
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061

    Par défaut

    en ce qui concerne psexec, il marche très bien, mais fait attention au WorkingDirectory, en VBS il y a longtemps, j'ai eu des problème avec psexec parce que je n'avais pas configuré correctement le WorkingDirectory.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  8. #8
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    avril 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : avril 2007
    Messages : 341
    Points : 567
    Points
    567

    Par défaut

    Merci du conseil, j'ai pu le vérifier quand j'ai commencé à lancer des scripts avec psexec.

    Je rajoute que pour accepter automatiquement la licence eula, il suffit de mettre le paramètre /accepteula à psexec. Cette info peut être utile pour quelqu'un au cas où.

    Sujet résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Lancer .vbs via .bat (runas) (Windows XP)
    Par titi04 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 25/02/2015, 17h08
  2. Vbs Runas avec password
    Par fabrice518 dans le forum VBScript
    Réponses: 2
    Dernier message: 27/02/2007, 21h41
  3. [VBS]Vider un répertoire avec la commande RUNAS
    Par Alphaz dans le forum VBScript
    Réponses: 3
    Dernier message: 20/06/2006, 17h43
  4. [VBS] Erreur sur "AddWindowsPrinterConnection"
    Par Admin dans le forum VBScript
    Réponses: 5
    Dernier message: 27/03/2004, 16h15
  5. Création d'un vbs qui permettrait d'arreter l'agent sql
    Par cracosore dans le forum MS SQL-Server
    Réponses: 6
    Dernier message: 03/02/2004, 10h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo