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)