Exécution
d'applications sous un compte administrateur
Principes
Certaines applications ou tâches diverses nécessitent d'être
exécutées avec des privilèges de compte administrateur. Or si
l'utilisateur en cours n'appartient pas à ce groupe, cela est impossible. Afin
de contourner cette difficulté, Microsoft a prévu trois outils :
- SU.EXE du Resource Kit de NT
- RUNAS.EXE (intégré dans Windows à partir de Windows 2000).
- La commande contextuelle "Exécuter en tant qu'administrateur"
Le problème majeur posé par ces outils est que
l'administrateur doit être présent physiquement près de l'ordinateur de l'utilisateur afin de
saisir de façon interactive son nom et mot de passe (et si l'administrateur communique ces informations, cela remet en cause la
sécurité du système). |
En particulier, ni SU, ni RUNAS ne permettent d'intégrer dans
une ligne de commande le mot de passe de l'administrateur, qui
doit obligatoirement être saisi dynamiquement (exception faite de RUNAS
sous Windows XP PRO, avec le commutateur /savecred, qui permet de
mémoriser ce mot de passe pour une exécution ultérieure, mais qui est peu
pratique).
Le script xrunas.vbs que j'ai écrit
contourne cette difficulté, mais la sécurité est considérablement compromise,
puisque le mot de passe du compte administrateur va apparaître en clair
dans la commande du script.
C'est pourquoi j'ai conçu SUPEREXEC, logiciel utilitaire (écrit en
Delphi 7, puis Delphi 2006), qui affranchit de la contrainte de saisie en temps réel du mot de passe
tout en garantissant la sécurité du système.
SUPEREXEC fonctionne sous les systèmes
d'exploitation suivants :
- Windows 2000 (Professionnel et Serveur)
- Windows XP (Professionnel et Édition Familiale)
- Windows 2003
- Windows Vista (32 ou 64 bits)
- Windows 2008 (32 ou 64 bits)
- Windows 7 (32 ou 64 bits)
- Windows 8 (32 ou 64 bits)
Il ne fonctionne pas sous Windows NT4 car certaines fonctions
(chiffrement, gestion de processus, gestion réseau) manquent sous ce système. |
Il permet de préparer une exécution, en enregistrant dans un fichier de type XML (extension .XSE) les informations suivantes
(intégralement
chiffrées) :
- le nom du compte utilisateur ou groupe d'utilisateurs - local ou
global (domaine)
- l'application concernée (exécutable, script, composant
enfichable,...)
- les paramètres passés à l'application
- le dossier de travail
- le nom et le mot de passe d'un compte administrateur
- des paramètres éventuels supplémentaires :
- une date limite d'exécution de l'application
- un compteur d'exécution
L'exécution de l'application sera refusée à l'utilisateur :
- si l'application n'a pas été autorisée à l'utilisateur ni à un groupe auquel il appartient.
- si une date limite a été définie et si elle est périmée.
- si un compteur a été défini et s'il est dépassé.
Par ailleurs, SUPEREXEC fonctionne à distance, et peut gérer de la même façon qu'en local les ordinateurs de n'importe quel
groupe de travail ou domaine accessible depuis le réseau.
Dans ce cas, tous les fichiers nécessaires (fichiers .XSE, logiciels,
certificat, raccourcis sur le bureau, ...) peuvent être copiés d'un simple clic
sur les ordinateurs distants.
Il a même été
prévu le cas d'ordinateurs déconnectés du réseau (cas d'utilisateurs
"nomades" par exemple).
Les fichiers nécessaires sont alors envoyés par messagerie électronique
sous la forme de fichier compressé unique mis en pièce-jointe dans un courrier
généré automatiquement. |
Remarques :
- en raison des restrictions réseau intrinsèques à Windows XP Edition Familiale
qui anonymise toute connexion entrante, SUPEREXEC ne peut être exécuté que
localement et non pas à distance sur un ordinateur fonctionnant sous ce système.
- l'exploration d'un autre groupe de travail ou domaine peut prendre un certain temps.
Il est possible de choisir le niveau d'exploration du réseau :
- ordinateur local seul
- exploration manuelle du réseau
- exploration automatique du réseau (tous les ordinateurs de tous les groupes et domaines)
à partir d'une plage donnée d'adresses IP.
- Les applications choisies doivent résider sur l'ordinateur concerné.
- SUPEREXEC est
entièrement compatible avec
UAC
(User
Account Control), à savoir le contrôle des comptes
utilisateurs sous Windows Vista, Windows 7 (et au-delà).
- Dans le cas où une application est de type console (ipconfig,
nbtstat, netstat, net time, ...), elle sera exécutée à travers un script créé dynamiquement et de telle façon que la fenêtre ne se ferme pas à la fin de l'exécution si on le souhaite.
- En ce qui concerne les ordinateurs distants, SUPEREXEC active à distance :
- le service d'accès au registre
- les partages administratifs
Le logiciel SUPEREXEC est composé des fichiers suivants :
SuperExec.exe |
programme principal, réservé aux administrateurs, servant à
planifier les applications |
RunSE.exe |
programme "runtime", pour tout utilisateur, servant à exécuter les applications. |
InstSE.exe |
programme d'installation du runtime et des fichiers de données
dans le cas d'un
envoi par courrier électronique |
SuperExec.cer |
certificat de sécurité |
CAPICOM.dll |
bibliothèque Microsoft redistribuable de gestion des certificats |
<code de langue>\SuperExec.lib |
fichier contenant tous les messages et textes. |
<code de langue>\SuperExec.chm |
le présent document d'aide. |
SuperExec.rtf |
le présent document au format RTF |
Licence.rtf |
la licence de ce logiciel |
Afin de garantir leur origine, tous les exécutables de SuperExec (SuperExec.exe,
RunSE.exe, InstSE.exe) sont certifiés par un certificat auto-signé
par l'auteur.
La première fois que l'un de ces programmes est exécuté, cela entraine l'ouverture de la
boite de dialogue suivante :

L'empreinte numérique (SHA1) de ce certificat
doit être obligatoirement égale à : |
1494 3A78 05A3 1D30 2AD4 9635
01E0 79D9 826E 3421 |
On retrouve cette information dans l'onglet "Signatures numériques" des
propriétés des fichiers exécutables.
Préparation
des applications (mode administrateur)
SUPEREXEC fonctionne à la fois
localement et à distance, si bien qu'il est possible de gérer de la
même façon aussi bien l'ordinateur local que les ordinateurs de n'importe quel
groupe de travail ou domaine accessible depuis le réseau.
SUPEREXEC se présente sous la forme d'une boite de dialogue ,
composée d'une barre de menu et de boutons, ainsi que 3 zones (réseau,
applications, journal) :

Pour plus d'informations, consulter le fichier d'aide compilé
SuperExec.chm
(ce fichier est fourni également avec le logiciel)
 |
Attention dans le choix des
applications autorisées!
Il faut absolument, dans la mesure du possible, éviter
d'autoriser des applications permettant de lancer d'autres
applications, car ces dernières seront exécutées également
avec des privilèges administrateur.
Par exemple si on autorise le processeur de commandes (%systemroot%\system32\CMD.EXE),
l'utilisateur pourra alors exécuter n'importe quel autre
logiciel, script, composant enfichable,..., avec des droits
administrateur. |
|
Exécution
des applications (Mode
utilisateur)
L'exécution d'application est réalisée par le module RunSE qui se présente sous la forme d'une boite de dialogue
:

Chaque icône représente une application qui sera exécutée sous un
compte qu'administrateur et, dans le cas de Vista et au-delà avec
UAC actif (le contrôle des comptes utilisateurs), en tant
qu'administrateur (avec privilèges élevés).
Un clic droit sur l'une des icônes fait apparaitre un menu déroulant
doté de 3 items :
- exécuter
son action est identique à un double-clic sur l'icône.
- l'application est exécutée en tant qu'administrateur
- créer un raccourci
- un raccourci de l'application est créé :
- sur le bureau de l'utilisateur en cours si le compte
concerné par SuperExec est un compte individuel
- sur le bureau commun à tous les comptes si le compte
concerné par SuperExec est un groupe d'utilisateurs
- propriétés
Affiche une liste de propriétés de l'application
- chemin du fichier exécuté
- nom de l'exécutable associé (éventuellement)
- paramètres optionnels
- type d'application (console ou application en mode fenêtré)
- libellé
- dossier de travail
- limitations éventuelles (date limite et/ou nombre d'exécutions)
- nom du compte administrateur utilisé
- commentaires éventuels
Il est également
possible de créer un raccourci sur le bureau en effectuant un "glisser/déposer"
("drag and drop") de l'icône.
Différents contrôles sont réalisés :
- autorisation de l'application à l'utilisateur
- Contrôle de date limite
- Contrôle du nombre maximal d'exécutions
Téléchargement
et installation
SUPEREXEC est entièrement gratuit.
Il s'installe (sous un compte administrateur) à partir d'un fichier
auto extractible : installSE.exe
(lui même contenu dans un fichier compressé : installSE43.zip)
Tous les programmes, y compris le programme d'installation, sont actuellement bilingue
français et anglais.
Historique
- mars 2011 - Version 4.3.3.342
- 2004 à 2011 : période de refonte complète
- utilisation de fichiers XML pour stocker les informations
- exploration du réseau par plage d'adresses IP, au lieu des
requêtes NetBIOS qui se sont avérées souvent trop lentes
- prise en charge de UAC (User Account Control)
- insertion d'un client SMTP et d'un composant ZIP pour
envoi des données et logiciels par email
- renforcement de l'algorithme de chiffrement.
- certification de tous les logiciels
- utilisation de InnoSetup comme programme d'installation
- refonte totale de l'application cliente (drag and drop, UAC, ...)
- 17/12/2004 - Version 3.0.1.237
- Possibilité de désactiver ou réactiver la prise en charge
du réseau (p.ex. ordinateur isolé) + optimisation des routines réseau
- Application totalement multilingue (un seul programme
d'installation)
- Fichier d'aide contextuelle SuperExec.chm
- Nouvelle interface :
- Barre de menus
- Barre de boutons
- Paramétrages regroupés dans une même boite de dialogue
- Fenêtres "popup" d'informations (réseau, comptes, applications)
- Journal des opérations affiché dans un navigateur au format
HTML
- Choix des applications
- Possibilité de désactiver les comptes locaux dans le cas de
machines dans un domaine
- Prise en compte des packages .MSI
- Le profil choisi peut-être :
- le compte de l'utilisateur
- le compte de l'administrateur
- le compte par défaut
- Dans le cas d'un ou plusieurs groupes d'utilisateurs, il est
possible d'insérer le lancement de l'application dans le script de
connexion sur le serveur de domaine (partage NETLOGON) ou dans un script de démarrage local (dossier %systemroot%\system32\GroupPolicy\User\Scripts\Logon)
sur toute machine.
- 02/02/2004 - Version 2.0.1.136
- Suppression du compte GÉNÉRAL, remplacé par la gestion de tous les
groupes (locaux et globaux)
- Éclatement du logiciel en 2 exécutables (SuperExec.exe pour la
préparation des applications, SE.exe pour leur lancement)
- Ajout du choix de profil de utilisateur
- Ajout du choix de dossier de travail
- Sélection possible d'application résidant sur une machine distante,
différente de la machine destinataire.
- Les raccourcis peuvent être placés, au choix :
- Sur le bureau
- Dans le menu démarrer (Démarrage)
- Dans la Base de Registres (clef HKCU\Software\Microsoft\Windows\CurrentVersion\Runonce)
- Le script utilisé dans le cas d'application console est à présent créé
dynamiquement, permettant ainsi un meilleur paramétrage
NB: il est créé dans le dossier %systemroot%, et n'est pas modifiable par un
utilisateur non administrateur.
- 10/12/2003 - Version 1.5.1.89
- Saisie manuelle du nom d'ordinateur (pour les ordinateurs cachés)
- Ajout du champ paramètres passés à une application
- Lancement des applications en mode console via un script automatique
afin de garder la fenêtre ouverte
- Ajout du compte virtuel GÉNÉRAL qui représente n'importe quel
compte.
- 03/12/2003 - Version 1.4.1.84
- Ajout de la gestion des comptes globaux (domaine)
- Libellés des raccourcis personnalisables
- 13/11/2003 - Version initiale
Appel
à traducteurs
Tous les exécutables qui constituent SuperExec ont été conçus de façon
à être traduits en n'importe quelle langue.
Pour cela tous les items de menus, boites de dialogue,
messages d'information ou d'erreur, sont stockés dans un unique
fichier texte (superexec.lib) situé dans un sous-répertoire de
celui contenant les exécutables.
Le nom de ce sous-répertoire est le code de langue
correspondant exprimé en hexadécimal.
P.ex. 0409 pour l'anglais, 040C pour le français,
...
On peut trouver une énumération de ces codes et leur signification dans la clef
:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
Le fichier SuperExec.lib a la structure suivante :
- La 1ère ligne est obligatoirement de la forme :
SuperExec.lib#xxxxxxxx
xxxxxxxx étant le nom de la langue concernée (Français,
English, ...)
- Les lignes suivantes sont toutes de la forme :
xxxxx.yyyyy.zzzzz=aaaaaaaaaaaaaaaaaaaaaaa
- xxxxx.yyyyy.zzzzz est un identifiant de menu, message,
champ de dialogue, ...
Il est composé de 3 termes séparés par des points.
Il ne doit pas être modifié.
- aaaaaaaaaaaaaaaaaaaaaaa est son contenu dans la langue
concernée.
Exemples :
- SuperExec.lib "français"
Form3.TabSheet1.Caption=Application et paramètres
Form11.btnRemoveClick.remove=Êtes-vous sûr de supprimer l'adresse "%s"?
- SuperExec.lib "english"
Form3.TabSheet1.Caption=Application and parameters
Form11.btnRemoveClick.remove=Are you sur to remove "%s" address?
Le contenu peut éventuellement renfermer d'un ou plusieurs paramètres
formels, qui seront remplis lors de l'exécution du programme par les
valeurs adaptées. Ces paramètres sont représentés par %s (chaine) ou
%u (entier non signé)
Le fichier SuperExec.lib contient environ 500 lignes.
Actuellement il n'existe que les versions française et anglaise.
Je fais donc appel à tous les traducteurs en d'autres langues et
bénévoles intéressés par une plus grande diffusion de SuperExec.
Merci par avance ... (me
contacter SVP)