Подтвердить что ты не робот

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.

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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