J'écris une classe C# qui exécute un processus (REG) pour exporter les clés de registre. REG exige que vous spécifiez un nom de fichier à exporter mais je préfère que la sortie de REG soit dirigée vers la sortie standard afin que je puisse le capturer directement dans mon code C# (en utilisant Process.StandardOutput). Existe-t-il un moyen dans PowerShell de spécifier la sortie standard comme nom de fichier?PowerShell: comment utiliser la sortie standard à la place du nom de fichier
Répondre
Si vous devez utiliser le programme REG (plutôt que d'utiliser PowerShell pour interroger/vider le registre - ou même simplement le faire dans le programme C# lui-même), le mieux que vous obtiendrez est probablement de lui permettre de vider dans un fichier temporaire, puis conduit le contenu du fichier à sortir standard et capturer dans votre programme C# de cette façon:
$guid = [Guid]::NewGuid().ToString("N")
REG EXPORT HKCU\Software\Microsoft\Windows "$env:temp\$guid" | Out-Null
Get-Content "$env:temp\$guid"
Remove-Item "$env:temp\$guid"
Si vous ne saviez pas: l'aide PowerShell, vous pouvez naviguer dans le registre comme même si cela faisait partie du système de fichiers. Peut-être que cela est utile à d'autres égards?
cd HKCU:\Software\Microsoft\Windows
dir
utilisez simplement « CONOUT $ » comme nom de fichier (comme pojnted dans les commentaires, cela ne fonctionne que sous Windows XP):
PS C:\> reg export HKLM\SOFTWARE\FileZilla 'CONOUT$'
■W i n d o w s R e g i s t r y E d i t o r V e r s i o n 5 . 0 0
[ H K E Y _ L O C A L _ M A C H I N E \ S O F T W A R E \ F i l e Z i l l a ]
" I n s t a l l _ D i r " = " C : \ \ P r o g r a m F i l e s \ \ F i l e Z i l l a "
" R u n i n S e c u r e M o d e " = " 0 "
" U s e R e g i s t r y " = " 0 "
" L a n g u a g e " = " E n g l i s h "
Il y a quelques problèmes de codage UNICODE dans la sortie présentés ici , mais vous devriez être capable de gérer cela dans le tampon lorsque vous l'analyserez.
Astuce intéressante, mais cela n'a pas fonctionné pour Win7 ou Server2003 (tout ce que j'ai à tester). Je reçois cette erreur ... ERREUR: Impossible d'écrire dans le fichier. Il peut y avoir une erreur de disque ou de système de fichiers. – JasonMArcher
Aussi ne fonctionne pas pour moi. Je reçois le même message que ci-dessus (ERREUR: impossible d'écrire dans le fichier, il peut y avoir une erreur de disque ou de système de fichiers). – Trevor
Lorsque j'ai testé sur XP (SP3), il semble bien fonctionner. Échoue aussi pour moi sur Server2003. On dirait que Reg a été mis à jour, ce qui a brisé le tour. – zdan