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 |