J'essaie de créer un élément à l'aide de Set-ItemProperty
dans PowerShell, qui fonctionne sur la plupart des systèmes:
New-PSDrive -name HKCR -PSProvider Registry -root HKEY_CLASSES_ROOT
Set-ItemProperty -Path HKCR:\Software\MyCompany\ -Name Level -Value 5 -ErrorAction SilentlyContinue
Cela crée une valeur DWORD sur la plupart des systèmes Windows 7, mais j'ai trouvé un système où cela crée une valeur STRING à la place, et je veux savoir: pourquoi? Que pourrait-il arriver que les systèmes se comportent différemment? Tous n'ont pas cette valeur déjà définie, tous utilisent la même image de base en utilisant la même version Powershell.
Btw, j'ai trouvé qu'en utilisant le code suivant, je peux explicitement définir un type, j'ai donc déjà résolu le problème:
New-ItemProperty -Path HKCR:\Software\MyCompany\ -Name Level -Value 5 -ErrorAction SilentlyContinue -PropertyType DWord
Mais juste pour la curiosité, je veux savoir pourquoi les systèmes se comportent différemment.
Je n'ai pas de réponse à la raison pour laquelle cela se produit, mais pour éviter de tels cas, soyez explicite. Utilisez le paramètre Type (dynamic) et spécifiez une valeur RegistryValueKind (vous pouvez également l'utiliser avec New-ItemProperty
):
Set-ItemProperty -Path HKCR:\Software\MyCompany -Name Level -Value 5 -Type DWord
Essaye ça.
[Microsoft.Win32.Registry]::SetValue("HKEY_CLASSES_ROOT\Software\MyCompany","Level",5,[Microsoft.Win32.RegistryValueKind]::DWord)