innoreg
— Inno Setup Registry¶
innoreg
personnalise le registre de Windows.
Dépendances¶
- Python 3.6+
- Inno Setup 5u, 6 — choisi face à NSIS pour sa mise à l’échelle DPI
- ExecTI — facultatif, pour les autorisations maximales
Registre¶
Clés | Contenu |
---|---|
HKCR [1] | → HKCU\Software\Classes + HKLM\Software\Classes |
HKCU | C:\Users\*\ NTUSER.DAT |
HKLM | HKLM\SYSTEM\CurrentControlSet\Control\hivelist |
HKLM\BCD00000000 | B:\Boot\ BCD [2] |
HKLM\SAM | C:\Windows\System32\config\ SAM |
HKLM\SECURITY | C:\Windows\System32\config\ SECURITY |
HKLM\SOFTWARE | C:\Windows\System32\config\ SOFTWARE |
HKLM\SYSTEM | C:\Windows\System32\config\ SYSTEM |
HKU\.DEFAULT [3] | C:\Windows\System32\config\ DEFAULT |
HKU\S-1-5-18 | → HKU\.DEFAULT |
HKU\S-1-5-19 | C:\Windows\ServiceProfiles\LocalService\ NTUSER.DAT |
HKU\S-1-5-20 | C:\Windows\ServiceProfiles\NetworkService\ NTUSER.DAT |
[1] | Écrire dans HKCU ou HKLM pour modifier HKCR , ne laissez pas HKCR choisir pour vous |
[2] | Pour nommer B: la partition de démarrage, clic droit sur « Ce PC » → Gérer → Gestion des disques |
[3] | .DEFAULT est le HKCU du bureau de connexion et des comptes Système et Trusted Installer |
Utilisation¶
usage: innoreg [-h] [-adelqrsuvx] [file] ...
Inno Setup Registry 0.4
positional arguments:
files *.ireg (expand and compile) or *.iss (compile)
optional arguments:
-h, --help show this help message and exit
-a, --admin auto-selected if key other than HKCU
-d, --default HKCU is C:\Users\Default
-e, --expand expand only, do not compile to *.exe
-l, --lang always shop language dialog
-q, --quiet hide errors
-r, --reboot prompt the user to restart the system
-s, --start start the new *.exe
-u, --users HKCU is C:\Users\Default + current user
-v, --verbose detail all actions and sections
-x, --x86 32 bit registry only
no file: -e stdin to stdout

Exemple : compiler 3 scripts en parallèle puis démarrer les exécutables créés:
pip install innoreg
innoreg -s file1.ireg file2.iss file3.ireg
L’expansion des 2 scripts *.ireg
est séquentielle pour assurer la cohérence des messages d’erreur. La commande se termine quand tous les exécutables sont démarrés, mais n’attend pas la fin de ces exécutables.
État de sortie :
0: succès 1: fichier manquant 2: erreur de syntaxe
La commande innoreg
appelle la fonction innoreg()
:
from innoreg import *
innoreg(('file1.ireg', 'file2.iss', 'file3.ireg'), 's')
Inno Setup 6 est utilisé si les versions 5u et 6 sont installées. Les scripts *.ireg
doivent être en UTF-8 mais pas nécessairement signés. Les scripts *.iss
créés par innoreg
sont en UTF-8 avec signature BOM car Inno Setup 5u et 6 supposent qu’un fichier non signé est codé en ANSI.
Syntaxe¶
La syntaxe innoreg
est plus brève que les fichiers *.reg
, la commande reg
et les *-ItemProperty
de PowerShell :
en
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\
Advanced\HideFileExt 0 1
AutoplayHandlers\DisableAutoplay 1
CLSID\{20d04fe0-3aea-1069-a2d8-08002b30309d}\ 'PC'
+Serialize\StartupDelayinmsec 0

La première ligne contient les langues à inclure dans l’exécutable, la version 0.4 propose en
et fr
.
La valeur HideFileExt
de type REG_DWORD
vaut 0 si la case est cochée, 1 si décochée. DisableAutoplay
vaut 1 si cochée, est supprimée si décochée. La valeur par défaut de la clé {...}
vaut « PC » si cochée, est supprimée si décochée.
Les valeurs sont de type REG_SZ
entre guillemets simples, REG_EXPAND_SZ
avec une %variable%
, REG_MULTI_SZ
entre guillemets doubles, REG_BINARY
entre points, REG_DWORD
sans décorateur.
Ajouter +
en début de ligne crée la clé si cochée, supprime la clé si décochée. -
supprime la clé si cochée, crée la clé si décochée.
Ne pas se préoccuper de la clé WoW6432Node
(Windows on Windows 64 bit, 32 bit Node), innoreg
écrit toutes les directives en 32 bits et 64 bits.
Privilèges d’administrateur¶
en fr
HKLM\Software\Policies\Microsoft\Windows\Explorer\DisableNotificationCenter 1!
HKLM\System\CurrentControlSet\Control\
Power\HibernateEnabled - 1
Session Manager\Memory Management\PagingFiles "" "?:\pagefile.sys"

Toute clé autre que HKCU
active l’option -a
qui provoque l’exécution en tant qu’administrateur.
Ajouter !
en fin de ligne marque l’exclusivité entre HKCU
et HKLM
, la valeur est supprimée de HKCU
si définie dans HKLM
et inversement, utile pour la stratégie de groupe.
Écrire -
supprime la valeur, HibernateEnabled
est supprimée si cochée, mais pas PagingFiles
.
Si plusieurs langues sont incluses mais pas la langue du système final, une fenêtre propose à l’utilisateur de choisir parmi les langues incluses.
Messages personnalisés¶
en fr
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\
Explorer
Explorateur
Advanced\HideFileExt 0 1
Show file extensions
Afficher les extensions des fichiers
CLSID\{20d04fe0-3aea-1069-a2d8-08002b30309d}\ 'PC'
Rename “This PC” to “PC”
Renommer “Ce PC” en “PC”
HKLM\Software\Microsoft\Windows\CurrentVersion\
Windows
-Explorer\MyComputer\NameSpace\{d3162b92-9365-467a-956b-92703aca08af}\
Hide Documents
Cacher Documents

Personnaliser les messages si valeurs peu explicites ou ont un sens opposé à l’effet désiré : HideFileExt
devient « Afficher les extensions des fichiers ».
Écrire les messages dans l’ordre de déclaration des langues. Si un message manque, le message de la première langue s’affiche, commencer par l’anglais si possible. Si un élément n’a qu’un message, il est codé en dur comme Description et ne surcharge pas la section CustomMessages
.
Long exemple¶

L’assistant classique Inno Setup 5 a une taille fixe. L’assistant moderne Inno Setup 6 peut s’agrandir jusqu’à 50%, innoreg
fixe la taille en fonction des cases à cocher.
Code source utilisable avec les privilèges d’administrateur, mais d’autres clés du registre nécessitent des autorisations plus élevées.
Autorisations maximales¶
en fr
HKLM\BCD00000000\Objects\{d810e1d4-0aa2-11e9-9b99-f526ca416017}\Elements\1600006c\Element .01.
Hide Windows logo at startup
Cacher le logo Windows au démarrage
HKLM\Software\Classes\CLSID\
Classes
{679f85cb-0220-4080-b29b-5540cc05aab6}\ShellFolder\Attributes a0600000 a0100000
Hide Quick access
Cacher l’accès rapide
{f02c1a0d-be21-4350-88b0-7367fc96ef3c}\ShellFolder\Attributes b0940064 b0040064
Hide Network
Cacher le réseau
HKLM\System\CurrentControlSet\Control\Power\User\PowerSchemes\381b4222-f694-41f0-9685-ff5bb260df2e\
Power
Alimentation
7516b95f-f776-4464-8c53-06167f40cc99\3c0bc021-c8a8-4e07-a973-6b14cbcb2b7e\ACSettingIndex 0
Do not turn off screen after 10 minutes
Ne pas éteindre l’écran après 10 minutes
238c9fa8-0aad-41ed-83f4-97be242c8f20\29f6c1db-86da-48c5-9fdb-f2b67b1f44da\ACSettingIndex 0
Do not go to sleep after 30 minutes
Ne pas mettre le PC en veille après 30 minutes

innoreg
ne gère pas les autorisations plus élevées qu’administrateur. Vous pouvez démarrer votre exécutable en tant que Trusted Installer avec ExecTI pour avoir les autorisations maximales sur HKLM
mais HKCU
sera le compte Trusted Installer, ce compte n’ayant pas de profil, HKCU
sera HKU\.DEFAULT
.
Vous ne pouvez pas créer un assistant modifiant à la fois HKLM
avec les autorisations maximales et HKCU
pour l’utilisateur courant.
Versions¶
0.4: | 16 février 2019 — Première version bêta, Inno Setup 6 |
---|---|
0.3: | 8 février 2019 — import * importe seulement innoreg() |
0.2: | 29 janvier 2019 — Empaquetage avec setuptools et métadonnées |
0.1: | 28 janvier 2019 — Première version alpha |