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
Но только ради любопытства я хочу знать, почему системы ведут себя по-другому.
Ответы
Ответ 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)