21

我尝试使用Set-ItemPropertyPowerShell 创建一个项目,该项目适用于大多数系统:

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

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

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

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

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

但出于好奇,我想知道为什么这些系统的行为会有所不同。

4

2 回答 2

33

我不知道为什么会发生这种情况,但为了避免这种情况,请明确说明。使用类型(动态)参数并指定RegistryValueKind值(您也可以将其与 一起使用New-ItemProperty):

Set-ItemProperty -Path HKCR:\Software\MyCompany -Name Level -Value 5 -Type DWord
于 2013-05-28T11:01:32.020 回答
6

试试这个。

[Microsoft.Win32.Registry]::SetValue("HKEY_CLASSES_ROOT\Software\MyCompany","Level",5,[Microsoft.Win32.RegistryValueKind]::DWord)
于 2014-12-18T11:09:22.497 回答