OVH Cloud OVH Cloud

Equivalent de "Runas" en script

13 réponses
Avatar
Oriane
Bonjour,

est-il possible d'ex=E9cuter un bout de script dans un contexte =
utilisateur diff=E9rent du contexte courant ? En fait ce que je =
veuxc'est l'=E9quivalent du "RunAs" en vbs...

Merci

10 réponses

1 2
Avatar
Georges

Bonjour,


Bonsoir

est-il possible d'exécuter un bout de script dans un contexte utilisate ur différent du contexte courant ? En fait ce que je veuxc'est l'équiva lent du "RunAs" en vbs...


allez voir içi : http://www.bellamyjc.org/fr/vbsdownload.html#xrunas
c'est un excellent site et un super personnage !

Merci


ya pas de quoi.

Georges

Avatar
Oriane
"Georges" a écrit dans le message de news:


Bonjour,


Bonsoir

est-il possible d'exécuter un bout de script dans un contexte utilisateur différent du contexte courant ? En fait ce que je veuxc'est l'équivalent du "RunAs" en vbs...


allez voir içi : http://www.bellamyjc.org/fr/vbsdownload.html#xrunas
c'est un excellent site et un super personnage !

Oui je suis allé voir, et il y a des choses. On utilise Wscript.Shell pour lancer RunAs et lui passer un mot de passe. Mais j'aurais préféré avoir une commande wscript "pur" et non pas lancer un shell...

Je me demande si la solution n'est pas d'utiliser la technique consistant à se connecter à un computer distant sous un autre compte, et à l'appliquer à l'ordinateur local (je n'arrive pas à retrouver cela dans le script center).

A+

Avatar
Jacques Barathon [MS]
"Oriane" wrote in message
news:
<...>
<< Oui je suis allé voir, et il y a des choses. On utilise Wscript.Shell
pour lancer RunAs et lui passer un mot de passe. Mais j'aurais préféré avoir
une commande wscript "pur" et non pas lancer un shell...>>

Tu ne lances pas "un shell" au sens où tu sembles l'entendre, c'est-à-dire
un environnement séparé de ton script. Tu crèes un objet de type
WScript.Shell (rien à voir avec un shell comme cmd.exe), ce qui veut dire
que tu as accès aux méthodes de cet objet, notamment la méthode
ShellExecute(). C'est une pratique très courante en scripting, donc on peut
dire du wscript "pur" comme tu le souhaites.

<< Je me demande si la solution n'est pas d'utiliser la technique consistant
à se connecter à un computer distant sous un autre compte, et à l'appliquer
à l'ordinateur local (je n'arrive pas à retrouver cela dans le script
center).>>

Ouh là, je ne suis pas sûr de comprendre, mais ça m'a l'air bien compliqué.
Si tu veux simplement faire l'équivalent du runas en VBScript, la méthode
ci-dessus est vraiment ce qu'il te faut.

Jacques
Avatar
Gilles LAURENT
"Jacques Barathon [MS]" a écrit dans le
message de news:

Bonsoir,

| Tu ne lances pas "un shell" au sens où tu sembles l'entendre,

Non, les propos de "Oriane" sont justes. Ce script démarre une instance
du shell (cmd.exe) via la méthode "Run" et injecte le mot de passe via
une simulation de séquence clavier via la méthode "SendKeys". Ce script
n'a pas pour vocation d'être "secure". Il permet simplement à un
utilisateur lambda d'exécuter la commande "Runas" sans aucune
intéraction.

| Ouh là, je ne suis pas sûr de comprendre, mais ça m'a l'air bien
| compliqué. Si tu veux simplement faire l'équivalent du runas en
| VBScript, la méthode ci-dessus est vraiment ce qu'il te faut.

En effet, impossible à réaliser en VBScript "pur".
Une solution alternative a été recemment donnée dans ce newsgroup.

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Jacques Barathon [MS]
"Gilles LAURENT" wrote in message
news:
<...>
Non, les propos de "Oriane" sont justes. Ce script démarre une instance
du shell (cmd.exe) via la méthode "Run" et injecte le mot de passe via
une simulation de séquence clavier via la méthode "SendKeys". Ce script
n'a pas pour vocation d'être "secure". Il permet simplement à un
utilisateur lambda d'exécuter la commande "Runas" sans aucune
intéraction.


Fichtre... Ca m'apprendra à ne pas aller voir à la source. Je pensais qu'il
s'agissait de la création d'un objet COM Shell.Application pour utiliser la
méthode ShellExecute avec le verbe "runas". Mais bon, cela ne réglait pas le
problème du mot de passe, j'aurais dû me méfier :-)

En effet, impossible à réaliser en VBScript "pur".
Une solution alternative a été recemment donnée dans ce newsgroup.


Pas de souci. Désolé pour la confusion.

Jacques

Avatar
Oriane
"Gilles LAURENT" a écrit dans le message de news:
"Jacques Barathon [MS]" a écrit dans le
message de news:

Bonsoir,

| Tu ne lances pas "un shell" au sens où tu sembles l'entendre,

Non, les propos de "Oriane" sont justes. Ce script démarre une instance
du shell (cmd.exe) via la méthode "Run" et injecte le mot de passe via
une simulation de séquence clavier via la méthode "SendKeys". Ce script
n'a pas pour vocation d'être "secure". Il permet simplement à un
utilisateur lambda d'exécuter la commande "Runas" sans aucune
intéraction.

| Ouh là, je ne suis pas sûr de comprendre, mais ça m'a l'air bien
| compliqué. Si tu veux simplement faire l'équivalent du runas en
| VBScript, la méthode ci-dessus est vraiment ce qu'il te faut.

En effet, impossible à réaliser en VBScript "pur".
Une solution alternative a été recemment donnée dans ce newsgroup.
Ah mais alors ca m'intéresse !


Autre problème: lorsque je prend le script xrunas de Bellamy, je dois lancer (pour mon problème) un autre "sous-script" en tant que commande. Je prend donc la commande : "cscript blabla.vbs", et là une fenêtre de commande apparait qui me demande un mot de passe... Comme je prends un compte qui a peu de droit dans le RunAs, c'est peut être que celui-ci doit donner un autre mot de passe pour exécuter le blabla.vbs, mais pourtant il a le droit d'exécution sur ce script...

Je ne vois donc pas pourquoi et quel noubeau mot de passe donner.

Avatar
Oriane
"Gilles LAURENT" a écrit dans le message de news:
"Jacques Barathon [MS]" a écrit dans le
message de news:

Bonsoir,

| Tu ne lances pas "un shell" au sens où tu sembles l'entendre,

Non, les propos de "Oriane" sont justes. Ce script démarre une instance
du shell (cmd.exe) via la méthode "Run" et injecte le mot de passe via
une simulation de séquence clavier via la méthode "SendKeys". Ce script
n'a pas pour vocation d'être "secure". Il permet simplement à un
utilisateur lambda d'exécuter la commande "Runas" sans aucune
intéraction.

| Ouh là, je ne suis pas sûr de comprendre, mais ça m'a l'air bien
| compliqué. Si tu veux simplement faire l'équivalent du runas en
| VBScript, la méthode ci-dessus est vraiment ce qu'il te faut.
Parce que tu penses que elle, elle n'est pas compliquée ?

Tu as vu que le script de Bellamy faisait 40 lignes au bas mot ?

Avatar
Jacques Barathon [MS]
"Oriane" wrote in message
news:%
<...>
| Ouh là, je ne suis pas sûr de comprendre, mais ça m'a l'air bien
| compliqué. Si tu veux simplement faire l'équivalent du runas en
| VBScript, la méthode ci-dessus est vraiment ce qu'il te faut.
<< Parce que tu penses que elle, elle n'est pas compliquée ?

Tu as vu que le script de Bellamy faisait 40 lignes au bas mot ? >>

En effet, j'avoue que je n'avais pas regardé le script (je ne l'ai toujours
pas fait d'ailleurs, il faudra quand même que j'y jette un oeil à l'occasion
:-)).

Jacques

Avatar
Oriane
"Jacques Barathon [MS]" a écrit dans le message de news:
"Oriane" wrote in message
news:
<...>
<< Oui je suis allé voir, et il y a des choses. On utilise Wscript.Shell
pour lancer RunAs et lui passer un mot de passe. Mais j'aurais préféré avoir
une commande wscript "pur" et non pas lancer un shell...>>

Tu ne lances pas "un shell" au sens où tu sembles l'entendre, c'est-à-dire
un environnement séparé de ton script. Tu crèes un objet de type
WScript.Shell (rien à voir avec un shell comme cmd.exe), ce qui veut dire
que tu as accès aux méthodes de cet objet, notamment la méthode
ShellExecute(). C'est une pratique très courante en scripting, donc on peut
dire du wscript "pur" comme tu le souhaites.

<< Je me demande si la solution n'est pas d'utiliser la technique consistant
à se connecter à un computer distant sous un autre compte, et à l'appliquer
à l'ordinateur local (je n'arrive pas à retrouver cela dans le script
center).>>

Ouh là, je ne suis pas sûr de comprendre, mais ça m'a l'air bien compliqué.
Si tu veux simplement faire l'équivalent du runas en VBScript, la méthode
ci-dessus est vraiment ce qu'il te faut.
C'est expliqué dans http://www.microsoft.com/technet/scriptcenter/resources/qanda/dec04/hey12 13.mspx.


Manque de chance il est dit aussi:
One important note: this approach, in which you run a script under alternate credentials, works only on remote machines. For some reason, WMI won't let you run a script under alternate credentials on your own computer. Go figure.

Arf !!!!!!!!!!!!!!!

Avatar
Jacques Barathon [MS]
De toute évidence il n'y a pas une réponse simple à ta question. Bon, si tu
veux vraiment reproduire ce que fait la commande runas, tu peux utiliser la
technique que je décrivais. Je donne l'exemple écrit en PowerShell, une âme
charitable saura traduire en syntaxe VBScript s'il le faut:

$shell = new-object -com Shell.Application
$shell.ShellExecute("monscript.vbs","","","runas",1)

Cet exemple va afficher la boîte de dialogue te proposant de saisir les
informations utilisateur/mot de passe (ou, si tu es sous Vista et que tu es
administrateur, tu auras la demande de confirmation de l'élévation de tes
privilèges).

Maintenant, si tu veux rendre la manip transparente pour l'utilisateur, la
commande runas.exe permet de sauvegarder les informations du compte
alternatif et de les réutiliser sans avoir à saisir le mot de passe. Il faut
quand même une première saisie au moins une fois sous le profil concerné:

C:> runas /user:administrateur /savecred monscript.vbs
Tentative de lancement de notepad en tant qu'utilisateur
"MCE01administrateur" ...
Entrez le mot de passe de administrateur :
********
<exécution de monscript.vbs en tant qu'administrateur...>

C:> runas /user:administrateur /savecred monscript.vbs
<exécution de monscript.vbs en tant qu'administrateur...>

Si cette solution te convient, elle peut vraisemblablement être utilisée à
partir d'un VBScript.

En fouillant un peu, on doit pouvoir exporter l'entrée de registre qui
contient le hash enregistré par /savecred et la réutiliser sous un autre
profil ou sur un autre poste. A manier avec précaution...

Jacques

"Oriane" wrote in message
news:%
<...>
Arf !!!!!!!!!!!!!!!
1 2