web-dev-qa-db-ja.com

Set-ItemPropertyは、一部のシステムでレジストリ値をDWordではなくStringに設定します。なぜですか?

PowerShellでSet-ItemPropertyを使用してアイテムを作成しようとしていますが、これはほとんどのシステムで動作します。

New-PSDrive -name HKCR -PSProvider Registry -root HKEY_CLASSES_ROOT

Set-ItemProperty -Path HKCR:\Software\MyCompany\ -Name Level -Value 5 -ErrorAction SilentlyContinue 

これにより、ほとんどのWindows 7システムでDWORD値が作成されますが、これが代わりにSTRING値を作成する1つのシステムが見つかりました。システムの動作が異なるとどうなりますか?すべてにその値が既に設定されているわけではなく、すべて同じPowershellバージョンを使用して同じベースイメージを使用します。

ところで、次のコードを使用することで、明示的に型を設定できることがわかったので、すでに問題を解決しました。

New-ItemProperty -Path HKCR:\Software\MyCompany\ -Name Level -Value 5 -ErrorAction SilentlyContinue -PropertyType DWord

しかし、好奇心だけのために、システムの動作が異なる理由を知りたいです。

17
Erik

私はそれがなぜ起こるかについての答えはありませんが、そのようなインスタンスを避けるために、明示的にしてください。タイプ(動的)パラメーターを使用して、 RegistryValueKind 値を指定します(New-ItemPropertyでも使用できます)。

Set-ItemProperty -Path HKCR:\Software\MyCompany -Name Level -Value 5 -Type DWord
27
Shay Levy

これを試して。

[Microsoft.Win32.Registry]::SetValue("HKEY_CLASSES_ROOT\Software\MyCompany","Level",5,[Microsoft.Win32.RegistryValueKind]::DWord)
4
gabriwinter