You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell cmdlet将REG_DWORD值基数从十六进制改为十进制

解答

首先澄清一个常见认知误区:REG_DWORD类型的注册表值本身不存储“基数”属性。注册表编辑器里的十六进制/十进制选项,只是编辑器打开修改窗口时的默认输入、显示偏好,和值的实际存储内容、程序读取到的结果没有任何关联。

你当前写的脚本已经完全符合配置要求,不需要额外调整:

  • 你定义的$desiredValue = 46是标准十进制整数,通过Set-ItemProperty/New-ItemProperty写入注册表时,存储的实际值就是十进制46(对应十六进制0x2E),和手动在注册表编辑器里选十进制输入46的最终效果完全一致。
  • 你查到的“PowerShell创建REG_DWORD默认基数为十六进制”是对文档的误读:只有给-Value参数传入带0x前缀的十六进制字面量(比如0x2E)时,PowerShell才会按十六进制规则解析数值;传入无进制前缀的普通整数时,PowerShell默认按十进制处理。

你可以自行验证效果:运行脚本后打开注册表编辑器定位到对应路径,双击WUfBDF值:

  • 如果窗口默认选中十六进制,数值栏会显示2e
  • 手动切换到十进制选项,数值栏就会显示46

这个切换只是编辑器的本地显示行为,不会修改注册表内存储的实际值,依赖该配置的微软私有预览工具读取注册表时,只会拿到数值46,完全满足配置要求,不会有兼容性问题。

你原脚本的逻辑基本通顺,只有创建注册表路径的分支可以微调得更严谨,优化后版本如下:

$regkeyPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"
$regEntry = "WUfBDF"
$desiredValue = 46

function createRegEntry($path, $entry, $value){
    Write-Output "开始修复注册表配置"
    if(-not (Test-Path -Path $path)){
        Write-Output "注册表路径 $path 不存在,正在创建"
        New-Item -Path $path -Force | Out-Null
    }
    Set-ItemProperty -Path $path -Name $entry -Value $value -Type DWord -Force | Out-Null
    Write-Output "注册表项 $entry 已配置为目标值 $value"
}

createRegEntry $regkeyPath $regEntry $desiredValue

内容的提问来源于stack exchange,提问作者Daikyu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:24:21