innoreg — Inno Setup Registry

innoreg personnalise le registre de Windows.

Dépendances

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
Compile

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 :

simple.iregen

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\

        Advanced\HideFileExt 0 1

        AutoplayHandlers\DisableAutoplay 1

        CLSID\{20d04fe0-3aea-1069-a2d8-08002b30309d}\ 'PC'

        +Serialize\StartupDelayinmsec 0
simple.exe

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

admin.iregen fr

HKLM\Software\Policies\Microsoft\Windows\Explorer\DisableNotificationCenter 1!

HKLM\System\CurrentControlSet\Control\

        Power\HibernateEnabled - 1

        Session Manager\Memory Management\PagingFiles "" "?:\pagefile.sys"
admin.exe

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

custom.iregen 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
custom.exe

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

long.exe

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

trusted.iregen 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
trusted.exe

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