Set-ItemProperty在一些系统而不是DWord上将Registry Value设置为String,为什么?

Eri*_*rik 17 windows registry powershell 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 
Run Code Online (Sandbox Code Playgroud)

这在大多数Windows 7系统上创建了一个DWORD值,但是我找到了一个系统来创建一个STRING值,我想知道:为什么?系统表现不同会发生什么?所有都没有设置该值,所有都使用相同的Powershell版本使用相同的基本映像.

顺便说一句,我发现通过使用下面的代码,我可以显式设置一个类型,所以我已经解决了这个问题:

New-ItemProperty -Path HKCR:\Software\MyCompany\ -Name Level -Value 5 -ErrorAction SilentlyContinue -PropertyType DWord
Run Code Online (Sandbox Code Playgroud)

但只是出于好奇,我想知道系统为什么表现不同.

Sha*_*evy 27

我没有答案为什么会发生,但要避免这种情况,请明确.使用Type(动态)参数并指定RegistryValueKind值(您也可以使用它New-ItemProperty):

Set-ItemProperty -Path HKCR:\Software\MyCompany -Name Level -Value 5 -Type DWord
Run Code Online (Sandbox Code Playgroud)

  • `-Type`是否记录在何处? (5认同)
  • “类型”在 Windows 10 中似乎无效。“HKCR”后面的冒号也是无效的。 (2认同)

小智 6

尝试这个。

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