Utiliser PowerShell pour interpréter les valeurs de registre

2

Considérons la clé suivante, à titre d'exemple

HKEY_CLASSES_ROOT\txtfile\shell\open\command

et son (Default) valeur

%SystemRoot%\system32\NOTEPAD.EXE %1

Cette valeur détermine ce qui se passera lorsque vous double-cliquez sur un .txt fichier. %SystemRoot% et %1 sont des variables qui peuvent être interprétées par cmd.exe. Une commande équivalente dans PowerShell ressemblerait à

$env:SystemRoot\system32\NOTEPAD.EXE $args[0]

Cependant, si vous définissez la valeur de registre sur l’équivalent Powershell, cela ne fera que créer une erreur, car c’est cmd.exe essayant de l'interpréter, et non pas PowerShell. Windows peut-il être configuré de manière à permettre à PowerShell d’être l’interprète au lieu de cmd.exe?

Steven Penny
la source

Réponses:

3

Non, vous ne pouvez pas configurer Windows pour utiliser des variables de style PowerShell dans le registre. Cela constituerait un changement radical pour de nombreuses applications car cmd.exe n’est pas le seul à pouvoir développer des variables d’environnement.

Par exemple, vous pouvez développer les variables d'environnement à l'aide de .NET avec:

[Environment]::ExpandEnvironmentVariables('%SystemRoot%\system32\NOTEPAD.EXE %1')

Vous pouvez aussi entrer %HOME% dans le dialogue d'exécution ( Win + R ) ou dans la barre d’adresse de l’explorateur Windows pour ouvrir votre répertoire personnel. Aucune de ces utilisation cmd.exe pour développer les variables.

Les applications tierces peuvent également analyser les chaînes elles-mêmes et rechercher les valeurs dans le registre. En raison des préoccupations de Microsoft en matière de compatibilité avec les versions antérieures, je doute que Windows modifie la façon dont les variables d’environnement sont stockées dans le registre.

Rynant
la source