Set-ItemProperty устанавливает значение реестра в виде строки в некоторых системах вместо DWord, почему?

Я пытаюсь создать предмет, используя Set-ItemProperty в PowerShell, который работает на большинстве систем:

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

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

Это создает DWORD-значение в большинстве систем Windows 7, но я нашел одну систему, в которой вместо этого создается STRING-значение, и я хочу знать: почему? Что может случиться, что системы ведут себя по-разному? У всех это значение уже не установлено, все используют один и тот же базовый образ, используя одну и ту же версию Powershell.

Кстати, я обнаружил, что с помощью следующего кода я могу явно установить тип, поэтому я уже решил проблему:

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

Но просто для любопытства я хочу знать, почему системы ведут себя по-разному.

2 ответа

Решение

У меня нет ответа на вопрос, почему это происходит, но чтобы избежать таких случаев, будьте явными. Используйте параметр Type (динамический) и укажите значение RegistryValueKind (вы также можете использовать его с New-ItemProperty):

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

Попробуй это.

[Microsoft.Win32.Registry]::SetValue("HKEY_CLASSES_ROOT\Software\MyCompany","Level",5,[Microsoft.Win32.RegistryValueKind]::DWord)
Другие вопросы по тегам