Batch : Ouvrir logiciels en tant qu'autre utilisateur.

zekey_0764 Messages postés 20 Date d'inscription jeudi 15 septembre 2022 Statut Membre Dernière intervention 21 décembre 2023 - 14 nov. 2023 à 18:21
 Jin - 21 déc. 2023 à 14:18

Bonjour,

Je cherche à créer un fichier batch me permettant d'ouvrir plusieurs logiciels en même temps en tant qu'autre utilisateur.

J'aimerais qu'à l'ouverture du fichier batch, il me demande de rentrer mon mot de passe (une seule fois) et ainsi ouvrir les différents logiciels que j'aurais inscrits dedans.

En partant sur cette base (par exemple) :

runas /user:domaine.fr\p.nom "cheminement logiciel"

Peut-être faut-il répéter la commande avec les différents cheminements logiciels .. ?

Pensez-vous que cela est faisable ? Commandes Dos ou Powershell ?

Merci pour vos investigations ! ^^

A voir également:

2 réponses

brucine Messages postés 14327 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 1 818
15 nov. 2023 à 08:58

Bonjour,

Se souvenir avant tout que la commande RUNAS ne peut s'élever (en français qu'on ne peut pas utiliser un compte administrateur si on n'a pas ces droits).
On peut contourner en utilisant un utilitaire tiers (ShellRunas, Sysinternals).

Dans tous les cas, il faut une commande par logiciel à lancer (et une éventuelle temporisation entre chaque, c'est une autre question).

Il n'est pas possible à ma connaissance d'entrer le mot de passe dans une variable qui serait définie à la demande par SET /P puis utilisée dans la commande RUNAS, c'est une sécurité qui est délibérément incorporée à la commande.

Il faudrait donc que ce mot de passe soit lu à partir d'un fichier texte où il figure par une syntaxe du style

runas /user:localadmin "c:\users\localuser\desktop\control.exe" < password.txt


ce qui est absurde sauf si éventuellement le script détruit après utilisation le fichier en question, mais il n'y a alors pas de sens à en créer un.

0

Bonsoir, si j'ai bien compris,

Vous voulez ouvrir plusieurs logiciels en même temps en tant qu'un autre utilisateur en utilisant la fonction RunAs et en utilisant le codage batch ?


Alors au plus simple, une idée qui me vient.

Vous allez créer deux fichiers batch !

Dans dans un premier temps vous allez tout simplement créer un fichier batch qui ouvrira tous vos programmes (si besoin rajoutez des lignes ou supprimez en). De cette façon :

@echo off
start "" "C:\Chemin\Vers\Programme1.exe"
start "" "C:\Chemin\Vers\Programme2.exe"
start "" "C:\Chemin\Vers\Programme3.exe"
start "" "C:\Chemin\Vers\Programme4.exe"
start "" "C:\Chemin\Vers\Programme5.exe"
echo ---------------------------------------
timeout /t 3 /nobreak >nul
exit

Vous allez enregistrer ce fichier au format batch en lui donnant un nom, exemple multifruits.bat, où vous voulez, pour faire bien vous pouvez l'enregistrer sur le bureau de la session secrète.

Dans un second temps vous allez créer un fichier batch avec la fonction RunAs qui ouvrira ce fichier batch en tant qu'autre utilisateur ! ;)

J'ai retrouvé un vieux fichier batch que j'avais écrit il y'a un temps, oui je sais... J'aime bien faire dans l'usine à gaz, en batch, dès que je commence à écrire je n'arrive plus à m'arrêter. ^^'
Remplacez les deux lignes du début sans mettre de guillemets:
Programme et Utilisateur

@echo off
set Programme=C:\Chemin\Vers\batch\multifruits.bat
set Utilisateur=NomDeSession
goto pass
:open
cls
set /a tempo = 0
echo ---------------------------------------
echo ----Bienvenue sur la fonction Runas----
echo ---------------------------------------
timeout /t 3 /nobreak
:prog
cls
echo ---------------------------------------
echo Veuillez entrer le chemin d'acces au programme que vous souhaitez ouvrir
echo Ou le raccourcis de commande d'execution:
set Programme=null
set /p Programme=
if %tempo% geq 1 goto pass
:user
cls
echo ---------------------------------------
echo Veuillez entrer le nom d'utilisateur avec lequel vous souhaitez vous connecter:
set Utilisateur=null
set /p Utilisateur=
:pass
cls
echo Pour ouvrir %Programme%
echo Sur votre ordinateur en tant que %Utilisateur%
runas /profile /user:%Utilisateur% "%Programme%"
if %errorlevel% neq 0 goto :error
echo ---------------------------------------
echo Le programme c'est lancer correctement!
echo ---------------------------------------
timeout /t 3 /nobreak >nul
goto eof
:error
echo ---------------------------------------
echo ------Une erreur c'est produite !------
echo ---------------------------------------
echo Voulez vous continuer ? (oui/non)
set Rep=oui
set /p Rep=
if %Rep%==non goto end
set error=------
set quitt=------
set /a tempo = 0
:erratum
cls
if %tempo%==3 goto bugg
set /a tempo = tempo + 1
echo ----------------%error%----------------
echo Que voulez vous modifier ?
echo ----------------%quitt%----------------
echo 1 Le programme saisie
echo 2 L'utilisateur saisie
echo 3 Le mot de passe
echo 4 Tout
set Chx=null
set /p Chx= Votre choix : 
if %Chx%==0 goto end
if %Chx%==1 goto prog
if %Chx%==2 goto user
if %Chx%==3 goto pass
if %Chx%==4 goto open
set error=erreur
set quitt=0 Exit
goto erratum
:bugg
cls
echo -----------------oups!-----------------
goto eof
:end
echo ---------------------------------------
:eof
echo ------------- A bientot ! -------------
echo ---------------------------------------
timeout /t 3 /nobreak >nul
exit

Vous n'avez plus qu'à l'enregistrer au format batch et le lancer au besoin. (ou bien sûr modifier votre ancien fichier batch ;)

Ps : C'est une version de code avec demande de mot de passe systématique !
Si vous souhaitez un raccourci avec la fonction RunAs pour accéder sans plus jamais avoir à rentrer de mot de passe (seulement une fois pour l'enregistrer) utilisez la commande /savecred

0
brucine Messages postés 14327 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 1 818
21 déc. 2023 à 07:49

Bonjour,

Notons tout d'abord que l'auteur n'est pas revenu depuis plus d'un mois: nous parlons sans doute dans le vide.

Pour autant, ton batch me semble contestable.

J'ai tout d'abord un doute que la commande Runas appliquée à un batch ne change pas que l'utilisateur de l'interpréteur de commandes, pas celui des exécutables qui y sont appelés: pourquoi ne pas se contenter d'écrire autant de sentences Runas que d'exécutables à lancer?

J'émets aussi bien sûr des réserves sur l'éventuelle sauvegarde d'un mot de passe; mais le commutateur /savecred reproduit le nom d'utilisateur précédent, par construction, la commande Runas va toujours prompter pour le mot de passe.

Pourquoi vouloir itérer 3 fois sur la demande des identifiants, ne suffit-il pas d'un Choice ou Set /p qui laisseront entrer les identifiants autant que l'on veut avec le choix recommencer-sortir?

Enfin, pourquoi définir en tête de gondole le programme et l'utilisateur en même temps que l'on va dans la suite du script demander à l'utilisateur de les préciser?

0
Jin > brucine Messages postés 14327 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024
Modifié le 21 déc. 2023 à 14:46

Bonjour @brucine et @zekey_0764
 
La fonction /savecred fonctionne parfaitement (même avec un deuxième fichier batch contenant les liens à ouvrir avec "Start") ! Normalement il n'est plus nécessaire de rentrer de mot de passe, elle est enregistrée.
 
/Savecred enregistre l'authentification de la session avec lequel on veut ouvrir, il n'est plus nécessaire de rentrer un mot de passe.
 
Pour ce qui est du code batch que je propose, vous avez raison 99 % du code est inutile, moins de 5 lignes de codes suffit ! Laissez-moi reformuler en y intégrant /savecred (Remplacez les deux lignes du début sans mettre de guillemets:
Programme et Utilisateur)

@echo off
set Programme=C:\Chemin\Vers\batch\multifruits.bat
set Utilisateur=NomDeSession
runas /savecred /user:%Utilisateur% "%Programme%"
exit

Bien sûr il peut y avoir encore bien d'autres façons de faire !! Mais Au plus simple (avec uniquement le langage batch), je suis parti sur la première idée qui est de créer deux fichiers batch ! L'un contenant les liens avec la fonction 'Start', et l'autre contenant la fonction 'RunAs' ! ( créer un fichier batch avec simplement la fonction "Start" qui ouvrirait une dizaine de liens. Et un fichier batch 'RunAs' pour simplement ouvrir tous ces liens avec une simple identification de la session spécifique.)
 
Bien sûr on peut aussi écrire une par une toutes les sentences 'RunAs' en un fichier batch. Même si je trouve cela un peu plus fastidieux ! ;) surtout si il y a beaucoup de liens.
 
La fonction /savecred il faut l'enlever si vous souhaitez rentrer un mot de passe unique à chaque fois pour lancer tous les programmes contenu dans le deuxième fichier batch! Sinon la session et le mot de passe seront enregistrés ! ;)
 
Ps : Si il y a beaucoup de liens dans le fichier batch contenant tous les liens à ouvrir simultanément, on peut mettre une petite temporisation entre chaque lien à ouvrir, si l'ordi peine... ! J'ai fait exprès de rajouter la commande temporisateur ' timeout /t 3 /nobreak >nul ' dans le code contenant les liens, il suffit de le rajouter entre chaque liens en modifiant aux besoins la valeur /t

0
zekey_0764 Messages postés 20 Date d'inscription jeudi 15 septembre 2022 Statut Membre Dernière intervention 21 décembre 2023
21 déc. 2023 à 11:08

Salut Jin, merci pour le temps que tu as consacré à créer ses lignes. Je vais tester ça. !

Je n’est pas répondu à Brucine car j’avais le sentiment qu’il n’avait pas bien compris la demande initial.

0
brucine Messages postés 14327 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 1 818 > zekey_0764 Messages postés 20 Date d'inscription jeudi 15 septembre 2022 Statut Membre Dernière intervention 21 décembre 2023
21 déc. 2023 à 11:29

Bonjour,

Si tel est le cas, rien n'interdit de revenir demander des précisions...

Je ne vois pas trop l'intérêt du double batch tel qu'il est préconisé, un seul suffit, mais à chacun son plaisir.

Je ferais comme je l'ai exposé autant de lignes Runas que de programmes à lancer (en temporisant par timeout ou ce qu'on veut s'il est nécessaire qu'un soit bien lancé avant le suivant), et Runas se substituant à Start, mais il est probable comme dit aussi que Runas enregistre le nom d'utilisateur mais continue à demander le mot de passe à chaque exécution: c'est pour ça que la seule solution consiste alors comme suggéré en <1> à le lire à partir d'un fichier texte, mais ce n'est pas très sécurisant.

0