-PropertyType 设置为 DWord,但创建 Item 时它会显示为字符串

问题描述 投票:0回答:2

我的代码:

try {
    if(!(Test-Path -Path $registryPath -Value $Name)) {
        New-ItemProperty -Name test -Path HKLM:\Software\WOW6432Node\Mozilla -PropertyType DWord -Value 2
    }
}
catch {
    Set-ItemProperty -Path $registryPath -Name $Name -Value $value 
}

我的问题:结果以字符串形式输出。

我尝试将

-PropertyType
更改为
-Type

我尝试过更改单词
DWord
的大写字母。

任何帮助将不胜感激。

powershell if-statement scripting try-catch registry
2个回答
1
投票

正如文档所说: 您还可以使用 Set-ItemProperty 创建和更改注册表值和数据。例如,您可以向某个项添加新的注册表项并建立或更改其值。

使用 Set-ItemProperty 还可以将注册表项的类型从 REG_SZ(字符串)值更改为 DWord,因此基本上您需要的是:

$registryPath = 'HKLM:\Software\WOW6432Node\Mozilla'
$propName = 'test'

Set-ItemProperty -Path $registryPath -Name $propName -Value 2 -Type DWord

当然,如果您没有权限在 HKEY_LOCAL_MACHINE 注册表路径中创建或更改某些内容,您将收到错误。


0
投票

当使用 Set-ItemProperty 设置 DWord 类型条目时,我看到了如下错误:

Set-ItemProperty : A parameter cannot be found that matches parameter name 'Type'.

显然旧版本的 Powershell/Set-ItemProperty 不包含 Type 参数。在这种情况下,以下语法可以代替它,这在我找不到类型参数的情况下肯定有效:

[Microsoft.Win32.Registry]::SetValue("HKLM:\Software\WOW6432Node\Mozilla","test",2,[Microsoft.Win32.RegistryValueKind]::DWord)

https://serverfault.com/questions/900282/a-parameter-cannot-be-found-that-matches-parameter-name-type

© www.soinside.com 2019 - 2024. All rights reserved.