首页 > 解决方案 > 使用 set-itemproperty 设置十进制值而不是十六进制

问题描述

我需要将两个注册表值更改为 30,但它们必须是十进制的,我使用的是下面的,但它总是用十六进制写。我花了几个小时在谷歌上搜索和玩耍,试图找到一种方法将基数指定为十进制而不是十六进制 - 出于某种原因,Windows 10 VPN 超时只能读取十进制时间......

$val1 = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\RasMan\PPP -Name "MaxConfigure"
if($val1.MaxConfigure -ne 30)
{
 set-itemproperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\RasMan\PPP -Name "MaxConfigure" -value 30
}

$val2 = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\RasMan\PPP -Name "MaxFailure"
if($val2.MaxFailure -ne 30)
{
 set-itemproperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\RasMan\PPP -Name "MaxFailure" -value 30
}

运行上述后,两个值都设置为 Hex 1e,即 30,但我需要在注册表项中指定基本十进制,并将值读取为 30

标签: powershellregistry

解决方案


正如您自己所说,1e(hex) 和30(dec) 是完全相同的值。您在注册表编辑器中看到的只是一个显示选项。两者实际上都是 的REG_DWORD0x0000001e

您可以轻松地验证这一点:

(Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\RasMan\PPP).MaxFailure
(Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\RasMan\PPP).MaxFailure.GetType()

推荐阅读