Script VBS (Runas.exe) le mot de passe n'est pas conservé tout le temps

Le
Glenn Gagné
Bonjour,

J'ai trouvé un petit script super intéressant qui permet d'exécuter un
programme "en tant que" pour les circonstances facheuses où certains
programmes ne fonctionnent qu'avec un compte administrateur. Ce script
permet de fournir le mot de passe automatiquement (pour que l'utilisateur
n'aie pas à le taper) *** Bon je sais que ça peut être pas super
sécuritaire, mais c'est une solution de dépannage aussi ***.

Mon problème, c'est qu'après un certain temps le mot de passe n'est plus
saisit automatiquement et je ne compredn pas pourquoi ? C'est très
étrange que ça marche sans problème puis que tout à coup ça ne marche
plus

Voici le script VBS:

-

Option explicit
dim oShell
set oShell= Wscript.CreateObject("WScript.Shell")

oShell.Run "runas /user:DOMAINEAdministrateur ""C:Program
Filesmonprogramme.exe"""
WScript.Sleep 100

'Mot de passe + un tilde (~) à la fin.
oShell.Sendkeys "motdepasse~"
Wscript.Quit

-

C'est le tilde à la fin du mot de passe qui fait la différence, je sais pas
exactement comment la console réagit à cette instruction, mais c'est comme
un CHR(13) on dirait.

Si quelqu'un pourrait me donner une explication pourquoi ça ne marche pas
toujours, j'aimerais bien ! J'ai tenté de prolonger le temps d'attente
(sleep 1000) pour laisser le temps au programme de s'exécuter, mais c'est la
même chose.

Merci

Glenn
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques Barathon [MS]
Le #665697
"Glenn Gagné" news:%
set oShell= Wscript.CreateObject("WScript.Shell")

oShell.Run "runas /user:DOMAINEAdministrateur ""C:Program
Filesmonprogramme.exe"""
WScript.Sleep 100

'Mot de passe + un tilde (~) à la fin.
oShell.Sendkeys "motdepasse~"
Wscript.Quit

----------------------------------------

C'est le tilde à la fin du mot de passe qui fait la différence, je sais
pas
exactement comment la console réagit à cette instruction, mais c'est comme
un CHR(13) on dirait.


Je confirme, le tilde correspond à l'appui sur la touche Entrée pour la
méthode SendKeys. Tu aurais pu aussi écrire:

oShell.SendKeys "motdepasse{ENTER}"

Si quelqu'un pourrait me donner une explication pourquoi ça ne marche pas
toujours, j'aimerais bien ! J'ai tenté de prolonger le temps d'attente
(sleep 1000) pour laisser le temps au programme de s'exécuter, mais c'est
la
même chose.


Une explication possible, c'est que l'invite de commande n'a pas la main au
moment où SendKeys envoie le mot de passe, puisque rien dans le script ne
force Windows à passer la main à cette fenêtre en particulier. Or, SendKeys
ne fait qu'envoyer les touches à la fenêtre active, quelle qu'elle soit.

Une parade possible (et classique avec SendKeys) consiste à forcer
l'activation au premier plan de la fenêtre concernée, avec la méthode
AppActivate. Il faut lui passer le titre de la fenêtre en question. En
admettant que la fenêtre s'appelle "Invite de commande - Mon programme", ton
script devient:

--- couper ici ---
set oShell= Wscript.CreateObject("WScript.Shell")

oShell.Run "runas /user:DOMAINEAdministrateur ""C:Program
Filesmonprogramme.exe"""
WScript.Sleep 100

oShell.AppActivate "Invite de commande - Mon programme"
oShell.Sendkeys "motdepasse~"
Wscript.Quit
--- couper ici ---

Jacques

Jacques Barathon [MS]
Le #665696
"Jacques Barathon [MS]" news:Oec4$L%
Une parade possible (et classique avec SendKeys) consiste à forcer
l'activation au premier plan de la fenêtre concernée, avec la méthode
AppActivate. Il faut lui passer le titre de la fenêtre en question. En
admettant que la fenêtre s'appelle "Invite de commande - Mon programme",
ton script devient:


En fait, le titre de la fenêtre sera plutôt du genre "Invite de commande -
runas /user:etc", à toi de personnaliser de toute façon...

Jacques

Gilles LAURENT
Le #665431
"Glenn Gagné" news:%
| Bonjour,

Bonjour,

| J'ai trouvé un petit script super intéressant qui permet d'exécuter un
| programme "en tant que" pour les circonstances facheuses où certains
| programmes ne fonctionnent qu'avec un compte administrateur. Ce script
| permet de fournir le mot de passe automatiquement (pour que
| l'utilisateur n'aie pas à le taper) *** Bon je sais que ça peut être
| pas super sécuritaire, mais c'est une solution de dépannage aussi ***.

Une solution beaucoup plus robuste consiste à créer un job CPAU :
http://www.joeware.net/freetools/tools/cpau/index.htm

Le job CPAU (chiffré) embarquera toutes les informations nécessaires à
l'exécution du programme (les identifiants de connexion, le nom et
chemin d'accès du programme à exécuter ainsi que les éventuels
paramètres). Je vous invite à consulter la syntaxe et les quelques
exemples disponibles sur cette page :
http://www.joeware.net/freetools/tools/cpau/usage.htm

--
Gilles LAURENT
http://glsft.free.fr
Michel Claveau
Le #665430
Bosnoir !

Dans le même genre :
http://www.ponx.org/batutils
(chercher, à gauche, runas.exe)


à noter, dans la dernière version, une astuce : si le fichier de
paramètres est "toto.par", en renommant (copiant) "runas.exe" comme
"toto.exe", il sera inutile d'utiliser un paramètre.











--
@-salutations

Michel Claveau
moi
Le #665429
Notre ami Michel Claveau tapota :

Bosnoir !

Dans le même genre :
http://www.ponx.org/batutils
(chercher, à gauche, runas.exe)


à noter, dans la dernière version, une astuce : si le fichier de
paramètres est "toto.par", en renommant (copiant) "runas.exe" comme
"toto.exe", il sera inutile d'utiliser un paramètre.


Bonsoir,

Très élégante ruse, j'aime bien ..., j'adopte !

A+

HB

Glenn Gagné
Le #665424
Merci pour vos nombreuses résponses !

De mon côté j'ai trouvé ce petit programme également, qui de plus permet de
crypter le tout de façon à sécuriser le mot de passe du compte
administratif:

http://robotronic.de/runasspc/ (RunAsSPC) - > RUNAS + PASSWORD + ENCRYPTION

Après quelques tests, il est très simple d'utilisation, gratuit en licence
d'utilisation "domestique" et un faible coût pour la licence commerciale.

Je vais prendre connaissance de toutes les possibilités offertes.

Glenn


"moi" news:
Notre ami Michel Claveau tapota :

Bosnoir !

Dans le même genre :
http://www.ponx.org/batutils
(chercher, à gauche, runas.exe)


à noter, dans la dernière version, une astuce : si le fichier de
paramètres est "toto.par", en renommant (copiant) "runas.exe" comme
"toto.exe", il sera inutile d'utiliser un paramètre.


Bonsoir,

Très élégante ruse, j'aime bien ..., j'adopte !

A+

HB




Publicité
Poster une réponse
Anonyme