Exécuter un programme avec droits administrateur

Le par Vanzetti44  |  2 commentaire(s)
Article n° 77 - Exécution en tant qu?administrateur d?un programme (120*120)

Ce dossier va vous expliquer comment créer des scripts permettant de lancer une application sous un compte utilisateur en lui donnant les droits administrateur. En effet, les comptes utilisateurs ne permettent pas d'installer ou d'exécuter certains programmes. Nous vous montrerons les moyens de contourner ce problème en donnant spécifiquement à un programme les droits administrateurs sous un compte utilisateur.

Introduction

Sous les versions NT de Windows (NT/2000/XP/2003), il arrive régulièrement que des applications, mêmes basiques, ne fonctionnent pas si l’on n’est pas logué en tant qu'administrateur.

La solution est alors de passer le compte utilisateur dans le groupe administrateurs. Pour des questions de sécurité, mais aussi de maintenance, cela est peu judicieux, par exemple, en entreprise où l’on souhaite limiter l’installation de logiciels ou éviter les manipulations hasardeuses qui peuvent mettre en péril tout le système. Cela est aussi valable dans le cadre familial avec des enfants ou des utilisateurs peu avertis à qui on ne souhaite pas donner un contrôle total du PC.

Ainsi, il est préférable de trouver une solution pour exécuter des programmes sous un compte limité mais avec les droits administrateur.

Avant de se lancer dans des procédures un peu complexes, veillez à vérifier les autorisations NTFS sur le dossier d’installation du programme. Dans la majorité des cas, cela peut en effet suffire à régler le problème.


Prenons un exemple :

- Vous avez installé le logiciel PhotoFiltre et vous remarquez que lors du lancement, un message d’erreur apparaît.

- Ouvrez votre Explorateur Windows et allez à l’emplacement d’installation, ici C:\Program Files\PhotoFiltre

- Faites un clic-droit sur ce dossier, puis "Propriétés"

- Allez dans l’onglet avancé "Sécurité" :

Image

- Sélectionnez le groupe "Utilisateurs" et donnez lui les droits d’écriture ou modifier :

Image

- Puis faites OK.

- Essayer de relancer le programme sous le compte limité. Si cela ne marche toujours pas, essayez les solutions proposées ci-dessous.

 

Cette solution peut ne pas suffire car, en effet, le logiciel peut avoir besoin d’écrire dans le Registre à des endroits où les simples utilisateurs n’ont pas les droits. On peut alors très bien ouvrir regedt32.exe, trouver ces clés et en modifier les autorisations. Pour des raisons de commodités, nous n’irons pas jusque là et utiliserons d'autres solutions plus conviviales :

  • la commande RUNAS disponible sous Windows 2000, XP et2003

  • la commande CPAU et AutoIt

  • le programme de JC Bellamy, Superexec


La commande RUNAS

1) La commande RUNAS

Sous Windows 2000/XP ou 2003, il existe la fonction "Exécuter en tant que".
Sous 2000, il faut appuyer sur la touche MAJ et faire un clic-droit.
Sous XP et 2003, ce menu est proposé en natif :

 Image

Une boite de dialogue s’ouvre vous demandant un compte et un mot de passe. Par défaut, c’est le compte administrateur local. Si l’on renseigne le bon mot de passe, alors le logiciel s’exécute avec les droits administrateur :

 Image

Seulement, cette méthode impose de rentrer le mot de passe à chaque lancement, ce qui peut être fastidieux pour certains.

RUNAS fonctionne aussi en ligne de commande :


Syntaxe de RUNAS :

RUNAS [/profile] [/env] [/netonly] /user: programme


/profile
si le profil de l'utilisateur doit être chargé

/env pour utiliser l'environnement en cours à la place de celui de l'utilisateur.

/netonly à utiliser si les informations d'identification spécifiées sont pour l'accès à distance seulement

/user sous la forme UTILISATEUR@DOMAINE ou DOMAINE\UTILISATEUR


Exemples :

  • runas /profile /user:MonOrdinateur\administrateur cmd

  • runas /profile /env /user:MonDomaine\admin "mmc %windir%\system32\dsa.msc"

  • runas /env /user:utilisateur@domaine.microsoft.com "notepad \"Fichier.txt\""


Remarques :

  • n'entrez le mot de passe utilisateur que lorsqu'il vous est demandé.

  • USER@DOMAIN n'est pas compatible avec /netonly.


Cette méthode est bien, mais il n'est  toujours pas possible de rentrer le mot de passe administrateur en dur.

Heureusement, depuis Windows XP, Microsoft a rajouté le commutateur /savecred.
Ajouté à la ligne de commande RUNAS, il va demander le mot de passe administrateur. Il suffit alors de l'indiquer et ce dernier sera enregistré dans le Registre. Il ne sera donc plus nécessaire de retaper le mot de passe.

Par exemple, créez un raccourci sur le Bureau contenant les lignes suivantes :

Runas /profile /user :administrateur /savecred chkdsk.exe


Pour une mmc :

Runas /profile /user :administrateur /savecred "mmc dfrg.msc"
 

Image

Lorsque l’on lance le raccourci, le système demande le mot de passe :

Image

Une fois renseigné, le programme s’exécute. Ensuite, plus besoin de rentrer le mot de passe en lançant ce raccourci.



La commande CPAU

2) La commande CPAU

Il vous faut déjà télécharger l’exécutable CPAU, version 1.10, disponible sur notre serveur ici.

Je vous conseille néanmoins de consulter le site officiel pour savoir si une version plus récente est disponible en téléchargement.

Ensuite copiez le fichier dézippé (CPAU.exe) dans le répertoire %systemroot%\system32 (généralement C:\windows\system32).

CPAU est un outil en ligne de commande qui permet de lancer un programme en spécifiant un compte utilisateur et un mot de passe. Il permet également de crypter le script dans un fichier texte. Ces paramètres sont les suivants :

-u         nom de l’utilisateur

-p         mot de passe

-ex       nom de l’exécutable

-file      spécifie le chemin et le nom du fichier txt contenant les paramètres du script

-enc     encode le script dans le fichier txt

-dec     décode le fichier txt pour exécuter le script

-cwd    spécifie un dossier de travail

-profile charge le profil de l’utilisateur


Prenons comme exemple l’utilitaire Scandisk (chkdsk.exe).

La première commande à taper est la suivante :


Cpau –u administrateur –p password –file c:\chkdsk.txt –ex chkdsk.exe –cwd c:\winnt\temp –enc


Cpau va alors créer un fichier crypté nommé chkdsk.txt, contenant les informations du script. Cpau ne stocke dans ce fichier que la commande, l’utilisateur et le mot de passe. Si vous souhaitez définir un répertoire de travail (obligatoire dans de nombreux cas), vous devrez le retaper à l’appel du fichier txt.

Si vous éditez le fichier avec le Bloc-Note , vous obtiendrez ceci :

Image

Il suffit ensuite de créer un autre script dans le Bloc-Note :


Cpau –file c:\chkdsk.txt  –dec –profile 


Avec un répertoire de travail:


Cpau –file c:\chkdsk.txt  –dec –profile –cwd c:\winnt\temp 


Enregistrez le en .cmd

Image

Vous pouvez alors copier ce fichier sur le Bureau de l’utilisateur ou en faire un script de connexion.


Cpau supporte également les chemins UNC :

Exemple : 

  • CREATION DU FICHIER TXT CPAU

Cpau –u administrateur –p password –file \\server\netlogon\chkdsk.txt –ex chkdsk.exe –enc


  • APPEL DU FICHIER TXT CPAU

Cpau – file:\\server\netlogon\chkdsk.txt –dec -profile -cwd c:\winnt\temp


NB : si vous exécuter un script cpau à partir d’un emplacement réseau (script de connexion par exemple), le commutateur –cwd est obligatoire sinon cela ne marchera pas.



La commande CPAU + AutoIT

3) La commande CPAU + AutoIt

Une autre façon d’encoder la commande Cpau est d’utiliser le programme AutoIT.

AutoIt est un programme qui permet de créer et de transformer des scripts en exécutables. Concrètement, cela empêchera l’utilisateur de voir le mot de passe qui apparaît dans le script.

Vous pouvez télécharger la version 2.64 (V2) de ce programme sur notre serveur, ici.
Je vous invite également à consulter le site officiel proposant ce programme.


Installer AutoIT :

NB : Lors de l’installation d’AutoIt, soyez logué sur un compte administrateur, et choisissez « Only for me » :

 Image


Créez ensuite un nouveau fichier txt avec notepad. Faites un clic droit sur le Bureau, "Nouveau, Document texte".

Prenons un exemple avec la commande chkdsk.exe, l’utilitaire de scandisk de Windows 2000/XP/2003

Dans le Bloc-Note, tapez ceci :

Run,cpau -profile -u administrateur -p password -ex c:\\winnt\\system32\\chkdsk.exe


NB : Il faut impérativement doubler les back slashs (\) avec AutoIt et de préférence indiquer le chemin complet du programme. Si vous désirez créer un script multi-OS (2000/XP/2003), utilisez des variables d’environnements.

Enregistrez le fichier avec une extension en aut, par exemple "cpau_chkdsk.aut"

Image


Copiez ce raccourci dans C:\Documents and Settings\All Users\Bureau

Connectez-vous ensuite en tant qu’utilisateur et lancez le script :

 Image

On voit bien que la commande s’exécute. Le seul problème, c’est que si on édite le fichier .aut avec le bloc note, le mot de passe administrateur est visible…

Revenez sur votre session administrateur. Nous allons maintenant convertir le script ".aut" en ".exe".
Sélectionnez votre fichier script, faites un clic-droit et choisissez "Compile Script" :

Image

AutoIt va alors transformer le script en exe. Un nouveau fichier est créé : "cpau_chkdsk.exe"

Image



La commande CPAU + AutoIT -fin

Vous pouvez alors placer cet exécutable sur le Bureau de l’utilisateur par exemple, ou le placer dans un répertoire (par exemple, Program Files\Scripts\) et faire un raccourci sur le Bureau, ce qui permettra d’en changer l’icône et de lui donner un nom plus convivial.


Pour compiler votre script aut, vous pouvez aussi utiliser le programme Aut2exe (Programmes\Autoit\Autoit2Exe).

Image

Sélectionnez le fichier aut source que vous souhaitez compiler.

Image

Pour la destination, si vous ne spécifiez aucun chemin, Aut2Exe utilisera par défaut le répertoire courant.

Dans "Custom Icon", sélectionnez un fichier ".ico" ou ".exe".

Image

NB: Sous windows, le fichier shell32.dll contient toutes les îcones Windows standard. Il se trouve dans %systemroot%\system32 (généralement C:\windows\system32). Editez-le avec Irfanview par exemple, pour en extraire les icones et les sauvegarder en ".ico".

Votre fichier se présente donc comme ceci:
 

Image

Si vous éditez l’exécutable, vous aurez alors quelquechose comme ceci :
 

Image

Attention, Cpau ne sait gérer que les exécutables (.exe). Les consoles mmc type dfrg.msc (défragmenteur de disque) ou gpedit.msc (stratégies de groupe) ne peuvent être lancées via Cpau. Il faut alors passer par un autre script :p.

Prenons comme exemple la console mmc de défragmentation dfrg.msc.

Créez un script cmd avec le Bloc-Note contenant juste ceci:


dfrg.msc


Enregistrez le dans un répertoire de votre choix en le renommant en "dfrg.cmd" (ici c:\scripts)

Créez un script aut comme ceci :


Run,cpau -u administrateur -p password -ex c:\\scripts\\dfrg.cmd -cwd c:\\winnt\\temp


Sous XP/2003, pour la défragmentation, utilisez defrag.exe.

Si vous souhaitez lancer des scripts CPAU à partir d'un emplacement réseau ou en script de connexion (logon script), vous devez rajouter les paramètres suivants à votre script aut:


Run, cpau -profile -u administrateur -p password -ex c:\\winnt\\system32\\chkdsk.exe -cwd c:\\winnt\\temp


Le commutateur -cwd permet de définir un répertoire de travail.


Une fois l’exécutable créé, il n’est pas nécessaire d’installer AutoIt sur toutes les machines.

Consultez également les fichiers d’aide de AutoIt et de CPAU qui vous permettront d’aller plus loin dans l’écriture du script.



Le programme SuperExec

4) Superexec

Jean-Claude Bellamy a créé un script vbs appelé xrunas qui permet de passer le mot de passe en ligne de commande. Seulement, ce mot de passe apparaissait en clair. Il a donc développé un logiciel spécifique qui s’appelle SuperExec, qui fonctionne en mode interface graphique et qui supporte le réseau. De plus, il gère les .exe, .cmd, .bat et .msc.

Téléchargez tout d'abord ce fichier ici (pour plus d'informations sur ce programme, consultez le site de Bellamy la).

Après avoir installé SuperExec, lancez le à partir de l'îcone du Bureau :

Image


SuperExec va d'abord faire un scan de votre réseau afin de rechercher les ordinateurs y appartenant. Il recherchera également un éventuel serveur Windows Contrôleur de Domaine afin d'y récupérer la liste des comptes utilisateurs. Attention, cela peut être très long.


 Image

 

Une fois la liste des ordinateurs et utilisateurs affichée, il faut tout d'abord spécifier le compte administrateur local (ou du domaine) et son mot de passe.

Allez dans "Fichiers", "Administrateur" puis rentrez le nom du compte administrateur et son mot de passe :

Image


Faites "OK", puis "Opérations", "Appliquer". Cela permet d'inscrire et crypter dans le Registre toutes ces informations.

Allez ensuite dans "Fichier", "Paramètres" et cochez les cases suivantes :

Image


Dans "Extensions", activez toutes les extensions.

Maintenant, comme exemple concret, nous allons autoriser l'exécution du défragmenteur de disque sous Windows 2000 pour le compte Test, membre du groupe Utilisateurs.

Dans la fênetre de droite, « comptes et groupes locaux », sélectionnez le compte Test :

 Image


Puis, faites "Applications", "Nouveau" (Ctrl+N).

Sélectionnez tout d'abord le programme :

 Image


Puis sélectionnez un Dossier de travail, il s'agit d'une sorte de dossier temporaire.
Choisissez par exemple c: , c:\temp , ou encore c:\winnt\temp.

Le programme SuperExec -fin

Image


Sélectionnez ensuite un emplacement pour le raccourci :

Image


Bureau : le raccourci sera créé sur le Bureau

Menu Démarrer\programmes\démarrage : il sera créé à cet emplacement et sera donc lancé à chaque démarrage d'une session.

Runonce : le programme sera lancé une fois au prochain démarrage de session.


Vous pouvez aussi définir des limitations :
 

Image


Date limite: définissez une date et heure limite d'exécution

Compteur: définissez le nombre d'exécution du programme.


Au delà de ces limitations, l'utilisateur (ou le groupe si vous avez choisi un groupe) ne pourra plus utiliser le programme.

Faites "OK" pour enregistrer. Faites "Opérations", "Appliquer" pour enregistrer définitivement le paramétrage de l'application.

Image

 

Dans le Journal (en bas), SuperExec affiche les modifications apportées.

Quittez SuperExec et ouvrez une session sur le compte Test que vous avez paramétré pour vérifier que le raccourci est bien présent et que l'application fonctionne.

Sur le Bureau, vous devez avoir cette icone:

Image

Si vous double-cliquez sur l'îcone, la console de défragmentation se lance:
 

Image 

Voilà. Il ne vous reste plus qu'à personnaliser vos applications pour offrir à vos utilisateurs le droit d'utiliser certains programmes sans compromettre la sécurité logicielle et matérielle de votre ordinateur.



Conclusion

Comme vous l’avez remarqué, il existe plusieurs solutions qui fonctionnent toutes très bien mais qui sont plus ou moins bien adaptées à ce que l’on souhaite faire :

  • La commande RUNAS est pratique si l’on veut lancer une application une fois, à un moment donné. Sous Windows XP/2003, le commutateur /savecred permet de renseigner le mot de passe une fois pour toute mais cela reste lourd s'il existe plusieurs utilisateurs ou ordinateurs.


  • La commande CPAU et son propre système de cryptage est très utile pour les administrateurs souhaitant écrire des scripts de connexion pour déployer des mises à jour, modifier des fichiers systèmes ou des clés de registre ou encore automatiser des opérations de maintenance.


  • La commande CPAU + AutoIT est utilisée pour créer des raccourcis vers des applications ou des fichiers d’installation de programmes.


  • Le logiciel SuperExec, propose une interface graphique qui permet de s'affranchir de l'étape d’écriture de script. Il permet également la gestion de nombreuses applications (exe, cmd, msc), la gestion des groupes et le support réseau. Il sera pratique et rapide dans le cadre personnel ; peut être un peu long à gérer au niveau réseau si vous avez beaucoup d’ordinateurs, car dans ces cas là, vous devrez à partir de SuperExec accéder à chaque machine, y copier le programme SuperExec puis paramétrer les applications pour chaque utilisateur.

Bon courage !


  • Partager ce contenu :
Vos commentaires
Trier par : date / pertinence
jguinchard offline Hors ligne Héroïque avatar 582 points
Le #169245
D'autres astuces :
- AutoIt (http://www.autoitscript.com/autoit3/)
La version 3 d'AutoIt inclut la fonction RunAsSet qui permet d'exécuter un programme en tant qu'un autre utilisateur.

- SysInternals (http://www.sysinternals.com/Utilities/PsTools.html)
PsExec proposé par SysInternals permet d'effectuer cette opération

- Jean-Claude BELLAMY
Ce programme en VBScript exécute la commande RunAs de Windows et envoie le mot de passe ensuite.
Remarque : il est possible d'encrypter des fichier .vbs (utiliser par exemple VBSFactory)
Gloops offline Hors ligne Héroïque avatar 966 points
Le #748521
Voilà un sujet très intéressant.
Il a subi des évolutions ces dernières années. Est-ce que ça ne brancherait pas quelqu'un de s'y coller ?

icone Suivre les commentaires
Poster un commentaire