En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies pour vous proposer des contenus et services adaptés. Mentions légales.

DipiRunAs // Lancement de commandes sous un compte défini

dipirunas01.png DipiRunAs est multilingue mais ne possède actuellement que très peu de traductions :
  • Français (OK, référence)
  • Anglais (à contrôler)
  • Allemand (à contrôler)
  • Espagnol (à contrôler)
  • Italien (à contrôler)
  • Portugais (à contrôler)
  • Russe (à contrôler)
Si vous souhaitez compléter les fichiers existants ou ajouter de nouvelles traductions, rendez-vous sur la page des fichiers de langues.
français anglais allemand espagnol italien portugais russe

Il y a quelque temps j'ai remplacé l'ancien ordi de mon fils aîné qui tournait sous Windows XP par un plus récent sous Windows 7. Cette migration n'a pas été sans conséquences puisqu'au lancement d'un de ses jeux favoris, la fenêtre de l'UAC apparaissait désormais, l'empêchant de jouer. Eh ouais, il n'est pas admin de sa machine ! biggrin

Pour contourner cette sécurité qui devenait un réel problème (un ado mécontent c'est vraiment très pénible !), je me suis mis en quête d'une solution. J'ai testé plusieurs méthodes/outils (dont l'excellent SuperExec de Jean-Claude BELLAMY) mais je n'ai rien trouvé de simple et efficace pour que mon fils puisse enfin lancer ce foutu FlyFF. J'ai donc développé vite fait un petit soft permettant de faire une "élévation de privilèges", utilisant pour ce faire un compte admin codé en dur dans l'appli... Et hop, pas propre-propre mais ça a tourné comme ça pendant plus d'un an.

Et puis quelques mois plus tard, l'éditeur de FlyFF a sorti un nouveau jeu. Bien entendu, ce dernier nécessitait lui-aussi d'être lancé en tant qu'admin. Mais plutôt que de me cantonner à recompiler mon utilitaire après modification du nom de l'exécutable à lancer, je me suis dit qu'il était préférable de le transformer en véritable outil paramétrable et utilisable par d'autres.

C'est comme ça que DipiRunAs est ainsi né !

Euh... c'est quoi ce truc ?!

Cet outil va vous permettre de lancer un exécutable (éventuellement accompagné de paramètres) sous un autre compte. Par exemple lancer une appli nécessitant d'être admin pourra l'être par un simple utilisateur... Il s'agit d'un petit outil sans prétention, totalement "portable" (dès lors que le Framework .NET 4.52 est présent sur votre machine) donc qui ne nécessite pas d'être "installé", développé en C#...

Comment cela fonctionne-t-il ?

Vraiment simplement, vous allez voir.

La première étape consiste en la création d'un fichier de configuration qui contiendra les informations nécessaires à l'exécution : le nom de l'exécutable, ses éventuels paramètres, le compte (pour l'utilisation d'un compte du domaine, utiliser la syntaxe compte@domaine) sous lequel l'appli devra être exécutée et le mot de passe associé. Bien entendu, ces données ne sont pas stockées en clair d'une part pour ne pas compromettre le compte utilisé, mais aussi pour éviter qu'un petit malin y apporte des modifications dans le but d'exécuter autre chose que ce que vous aviez prévu. Pour couronner le tout, le fichier généré contient aussi la "signature" de l'exécutable à lancer, au cas où le même (ou un autre) petit malin chercherait à remplacer l'exécutable à lancer par un cmd.exe, par exemple.

La seconde étape, encore plus simple, se résume à créer un raccourci vers DipiRunAs.exe accompagné du nom du fichier de paramètres.

Génération d'un fichier de configuration

Via une fenêtre d'invite de commande, placez-vous dans le dossier de l'outil.

Lancez-le avec le paramètre /create suivi du nom du fichier que vous souhaitez créer, "test" par exemple. En l'absence de ce second paramètre, l'outil utilisera par défaut "DipiRunAs.dra"

La fenêtre d'édition de configuration de l'appli s'ouvre et fait apparaître cinq champs de saisie et une case à cocher :

  • le nom du fichier de configuration
  • le nom de l'exécutable qui devra être lancé (éventuellement accompagné de son chemin si DipiRunAs n'est pas placé dans le même répertoire). L'utilisation des variables d'environnement est ici autorisée.
  • une case à cocher permettant d'inhiber la vérification de la somme de contrôle de l'exécutable spécifié. Ceci peut être nécessaire si ledit exécutable est voué à changer, ce qui vous imposerait de devoir mettre à jour le présent fichier .dra. Mais attention : en cochant cette case, cette vérification ne sera plus effectuée ce qui peut poser un problème de sécurité important si l'utilisateur a le droit d'écrire dans le dossier contenant l'exécutable à lancer. Car il pourra alors le remplacer par autre chose...
  • les éventuels paramètres
  • le compte sous lequel l'exécutable devra être lancé
  • l'éventuel mot de passe associé au compte (à noter que la correspondance compte/mot de passe n'est pas vérifiée ici, si la saisie est erronée, une erreur se produira à l'exécution de la commande)

Une fois ces champs renseignés, vous pouvez tester la configuration ou cliquer sur le bouton OK pour l'enregistrer. Si rien d'anormal n'est détecté, un message d'information s'affiche pour vous informer du succès de la création du fichier de configuration et l'application se ferme. Pour tester, il vous suffit de faire glisser votre fichier .dra sur l'icone de DipiRunAs...

Modification d'un fichier de configuration existant

Le principe est le même que pour la création. Remplacez juste le /create par /edit. Là encore, le nom du fichier est optionnel, s'il est absent l'outil cherchera à traiter "DipiRunAs.dra".

Une autre façon d'accéder au "mode édition" d'un fichier .dra : lancer l'éventuel raccourci (ou faire glisser le fichier .dra sur l'exécutable) tout en pressant une des touches Shift.

Vous noterez que le champ "Mot de passe" est vide, question de sécurité. Vous ne voudriez quand même pas que vos enfants ou vos utilisateurs se servent d'une configuration existante pour lancer ce qu'ils veulent sous votre compte ?!

Mise en œuvre

Bien entendu, vous ne pouvez pas demander à vos utilisateurs de "faire glisser" le fichier .dra sur l'icone de l'outil comme je viens de vous le conseiller pour essayer votre premier test.

Il vous faudra juste créer un raccourci vers l'outil et indiquer en paramètre le nom (éventuellement précédé de son emplacement s'il ne se trouve pas dans le même dossier) du fichier de configuration contenant les informations à traiter. C'est dans le champ "Cible" de la fenêtre de propriétés du raccourci que cela se passe. Attention à ne pas oublier d'entourer de double-quotes en cas de présence d'espaces dans les chemins/noms !!!

Exemple :

  • C:\Temp\DipiRunAs.exe cmd.dra
  • "C:\Program Files\gPotato\FlyFF\DipiRunAs.exe" flyff.dra
  • "C:\Program Files\Dipisoft\DipiRunAs\DipiRunAs.exe" "C:\Program Files\gPotato\FlyFF\flyff.dra"

Voilà, j'espère que ce nouvel outil rendra service à nombre d'entre vous.

Une dernière petite mise en garde : assurez-vous bien qu'en permettant à un utilisateur de lancer un logiciel ou une commande dans un autre contexte que le sien, cela ne lui permette pas d'accéder à des fonctionnalités qui pourraient s'avérer "dangereuses". Je suis sûr que vous êtes conscient que si le fait de lancer calc.exe sous le compte de l'admin ne permet pas d'user de ces droits pour autre chose, il en est tout autre avec un cmd.exe. Mais sachez aussi qu'un simple notepad.exe peut se transformer en gestionnaire de fichiers grâce à ses anodines fonctions "ouvrir" et "enregistrer sous...". Et lancé en mode admin, un simple utilisateur pourrait faire des dégâts...

Attention : certains antivirus réagissent au téléchargement de cet outil, annonçant une menace (variante de "MSIL/Packed.Confuser.N"). Cela est lié au fait que l'appli est "obfusquée" pour ne pas permettre sa décompilation. Une méthode également utilisée par les créateurs de virus, malheureusement. Inutile de me le signaler, je suis au courant. Je vous certifie que tous mes produits sont sains, alors soit vous me faites confiance, soit vous devrez vous passer de cet outil. frown

  Télécharger ce logiciel (version portable ZIP)


Date de création : 30/12/2013 @ 23:36
Dernière modification : 22/03/2020 @ 22:37
Catégorie : - Outils divers
Page lue 26396 fois


Réactions à cet article


Réaction n°5 

par   Gillou972 le 22/01/2014 @ 23:42

Mdrr 2, "trucs tordus", non sérieux désolé pour la migraine mais c'est vrai que j'excelle dans la simplification complexe,ceci dit le problème de "l'élévation" d'un exécutable en local marche bien, quand on a la main dessus.C'est pour automatiser le procédé à distance et sur tout un parc que c'est ch...ardu, je cherche je cherche n

 

[réponse de damien, le 23/01/2014 à 12h05]

Donc ce que tu cherches à faire, c'est exécuter une appli sur un poste distant via DipiRunAs ? Pour formuler ça différemment : depuis ta machine A, tu veux pouvoir demander à la machine distante B de lancer une appli sous un compte spécifié ? C'est bien ça ou j'ai le cerveau à l'envers ce matin ?!
 
Si c'est bien ça, tu n'y parviendras pas avec mon outil uniquement. Lui ne fait qu'exécuter localement une commande sous une identité définie ; il ne permet pas de le faire à distance. Il te faudra donc l'utiliser conjointement avec une méthode d'exécution de code à distance (PSEXEC par exemple, ou via WMI).
 
Exemple simple de script permettant d'exécuter du code à distance via WMI :
 

RunDist.vbs

' Script écrit par D.PONNELLE, noCopyright 2014 Dipisoft
'
' Objet 
' ~~~~~
' Lancement d'un process sur une machine distante via WMI
 
Option Explicit
 
Dim objWMIService, objProcess, objProgram, objExec
Dim strComputerName, strLigneDeCommande
 
Do
   strComputerName = (InputBox("Veuillez saisir l'adresse ou le nom de la machine cible.", "RunDist", strComputerName))
 
   If strComputerName = "" then exit do
 
   On Error Resume Next
   Set objWMIService = Nothing
   Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & strComputerName & "/root/cimv2")
   On Error Goto 0
 
   If objWMIService Is Nothing Then
      MsgBox "La machine distante ne répond pas ou n'accepte pas les connexions WMI.", 16, "Rundist sur " & strComputerName
 
   Else
      strLigneDeCommande = (InputBox("La machine répond, veuillez saisir la ligne de commande à exécuter.", "RunDist", strLigneDeCommande))
 
      If strLigneDeCommande = "" then exit do
 
      Set objProcess = objWMIService.Get("Win32_Process")
      Set objProgram = objProcess.Methods_("Create").InParameters.SpawnInstance_
      objProgram.CommandLine = strLigneDeCommande
      Set objExec = objWMIService.ExecMethod("Win32_Process", "Create", objProgram)
 
      If objExec.ReturnValue = 0 Then
         MsgBox "Le process n°" & objExec.ProcessId & " a été créé avec succès.", 64, "Rundist sur " & strComputerName
 
      Else
         If IsNull(objExec.ReturnValue) Then
            MsgBox "La création du process distant a échoué.", 16, "Rundist sur " & strComputerName
 
         Else
            MsgBox "La création du process distant a réussi mais l'erreur " & objExec.ReturnValue & " s'est produite.", 48, "Rundist sur " & strComputerName
         End If
      End If
   End If
Loop
 
Wscript.Quit
 

Réaction n°5 

par   Gillou972 le 22/01/2014 @ 21:19

Bon c'est peut-être important alors j'ajoute que le SuppImp.bat spécifié dans le fichier de données .dra comporte un argument (utilisé en %1% dans le .bat) tel que:
ServeurDossierSuppImp.bat "EPSON AL-M2000 Advanced - Principale blanc (Copie 1)"
C'est le nom de l'imprimante à supprimer qui est spécifié en argument.Le .bat mettant en oeuvre printui.dll, je vous fais grâce des détails sordides 

 

[réponse de damien, le 23/01/2014 à 07h35]

En fait, je pense que ce serait plus simple pour moi de comprendre si tu me faisais un .zip avec le fichier suppimp.bat et le fichier .dra... et en m'expliquant en une fois (j'ai du mal à suivre quand l'info est éparpillée dans une demi-douzaine de messages) et clairement ce que tu cherches à faire et comment tu t'y prends. frown


Réaction n°4 

par   Gillou972 le 22/01/2014 @ 21:08

MigrImp ?? Ok je jette un oeil...

Sinon, j'ai tenté juste de lancer Dipi tel que:
-> Création d'un raccourci (disons Rdistant) pointant sur un \\serveur\dossier\dipirunas.exe SuppImp.dra (locale,théoriquement chemin en cours du raccourci, le bureau quoi)
-> Copie et modification du même raccourci (disons Rlocal), pointant cette fois sur une copie locle de Dipi soit, c:\windows\temp\dipirunas SuppImp.dra (locale -> bureau)
* Connexion sur un compte bateau du domaine sans droits particuliers (OK)* Les 2 raccourcis sont sur le bureau windows pour plus de commodité  (OK)
- Test1 - On lance Rdistant, pouf erreur (texto ça dit, dommage une image aurait été plus parlante) :
"Erreur rencontrée à la tentative d'impersonnation. Demandez à votre administrateur de vérifier que le compte spécifié (DXXXXXX\Gillou972) existe, qu'il n'est pas désactivé et que le mot de passe est correct...
Le relais a reçu des données incorrectes"
C'est clair que mon mot de passe est correct , quant au relais spécifié, kesako ??!  
J'ai essayé la méthode de arb69 concernant "domaine\compte" et "compte@domaine", rien à faire. J'ai même essayé en lançant le raccourci "En tant qu’administrateur", nothing..
- Test2 - On lance Rlocal, repouf erreur 
* copie de Dipi+fichier SuppImp.dra sur %Windows%\temp (tout en local donc OK)* Lancement du raccourci, pouf erreur identique
Que n'ai-je pas fait correctement selon vous?  

[réponse de damien, le 22/01/2014 à 21h26]

Si tu pouvais recommencer en étant plus clair, je suis preneur car là je n'ai rien, mais vraiment rien pigé. J'en ai chopé mal au crane à lire ton message ! Du coup je vais me coucher...
Et si tu commençais par tester une élévation d'un exécutable local plutôt que de t'attaquer d’emblée à des trucs "tordus" ?! 

Réaction n°3 

par   Gillou972 le 22/01/2014 @ 15:56

Merci aussi pour cette info, en effet ce sera très très utile k
Sinon, justement on a pas mal de problèmes pour installer des imprimantes depuis le passage à windows 7, en effet, nous avons mis au point une petite usine à base de DOS+VB+DB ACCESS pour installer les pilotes en fonction du profil (localisation,type imprimante etc) de l'utilisateur.Mais voilà avec XP ça marchait au poil, et depuis l'UAC (et les GPO) pfff galère, les derniers systèmes en 64bits n'ont fait que compliquer les choses.
Du coup, un user qui a des droits "standard" ne peut plus installer quoi que ce soit, on passait bien par le user System, mais il n'a accès ni aux dossiers "spécifiques" ni aux ressources réseau sans élévation de droits , et voilà que je vois Dipi (pour les intimes) qui me redonne espoir, car on a un très gros problème, je vais faire court:
- Le but consiste à installer dès le démarrage du système les pilotes et les imprimantes associées avec le user "System" avec une tâche planifiée
- Pour ça faut virer les anciens ports (en cas de changement d'imprimante etc..) et créer le(s) nouveau(x), c'est là que ça déconne...Pour créer les ports l'UAC est cool mais bizarrement dès qu'il s'agit de les supprimer faut une élévation 
Exemple, si je lance Supprime.cmd, le progamme en lui-même aura les droits admin mais pas les programmes qu'il lance, c'est étrange..conséquence, les comptes étant séparés (ce que Admin créé, User ne le vois pas et pire, vice-versa??!), donc chaque fois qu'un user différent se connecte, pouf une copie d'imprimante. Sinon, on avait un bug dans le script VB lié à la casse, du coup certains se retrouve avec 96 copies ..et impossible de les virer, et ce sur plusieurs domaines.
C'est là j'espère que Dipi va me servir (enrobé dans une tâche planifiée) Dois-je lancer Supprime.cmd avec Dipi et ça suffira ?Ou DANS Supprime.bat, lancer Dipi XXX.dra pour chaque commande exécutée ?La première solution serait la plus simple, mais soyons pas feignasses Je vais essayer les deux pour voir.
Un grand merci pour cet outil...je vous tiens au courant

 

[réponse de damien, le 22/01/2014 à 17h30]

Ben tu sais quoi ? Tu n'as qu'à tester ! wink
 
Et sinon, tu as jeté un coup d’œil à MigrImp ? Pour l'ajout/suppression d'imprimantes, c'est assez simple et pratique...

Réaction n°2 

par   arb69 le 02/01/2014 @ 12:30

J'ai trouvé la solution :

Il ne faut pas mettre "domaine\compte" mais "compte@domaine"
encore merci pour cette appli.
Bonne et heureuse année 2014 à vous et vos proches.
ArB69

[réponse de damien, le 02/01/2014 à 16h39]

Merci pour cette information qui servira très certainement à d'autres utilisateurs. merci1.gif


Réaction n°1 

par   arb69 le 02/01/2014 @ 10:33

Bonjour,
Je viens de me pencher sur DipiRunAs et c'est super utile. Peut-on l'utiliser avec le compte d'un autre domaine (remplacer "administrateur" par "domaine\compte") ?

[réponse de damien, le 02/01/2014 à 10h48]

En principe oui, je n'ai pas testé : je suis en workgroup à la maison... retour au taf lundi. triste1.gif
Essaye et dis-moi, si ça ne passe pas je ferais les modifs nécessaires.