【问题标题】:How do I change a REG_DWORD value's base from Hexadecimal to Decimal via PowerShell cmdlets?如何通过 PowerShell cmdlet 将 REG_DWORD 值的基数从十六进制更改为十进制?
【发布时间】:2022-07-06 04:03:06
【问题描述】:

对于微软提供的私人预览工具,需要将注册表值设置为Type REG_DWORD value 46,然后将Base从十六进制更改为十进制。这是我所指的文档的一部分:

  1. 使用“编辑”菜单或右键单击创建新的 DWORD(32 位) 取值并将其命名为 WUfBDF(注意这里唯一的小写字母 name 是第三个“f”,其余都是大写)。
  2. 接下来,右键单击新值并选择“修改...”选项。
    确保选择十进制基数并将值设置为 46。

我正在创建一个主动修复脚本,以推送到一组需要此 Reg 密钥/项目以使预览工具正常工作的机器。

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

function createRegEntry($path, $entry, $value){
    write-output "Remediating registry entry."
    if(test-path -Path $path){
        write-output "$path exists. Setting $entry"
        Set-ItemProperty -Path $path -Name $entry -Value $value -Type DWord -force | out-null
    }else{
        New-Item -Path $Path -Force
        New-ItemProperty -Path $path -Name $entry -Value $value -PropertyType DWord -force | out-null
    }
}

createRegEntry $regkeyPath $regEntry $desiredValue

我从 Microsoft 文档中阅读了 Set-ItemProperty 文档 here,似乎在创建 REG-DWORD 值时,其 Base 默认为十六进制并且必须手动更改。以十进制为基数将其更改为 REG_DWORD 的任何方法

【问题讨论】:

  • 底座只是一个展示的东西。它不存储在注册表中,仅用于显示。

标签: .net powershell registry


【解决方案1】:

regedit UI 中的“base”选项为用户提供了便利。指令可以很容易地说“将基数设置为十六进制并输入 2e”——它们都是相同的数字。有时使用十六进制数字更容易 - 例如0xF000(十六进制)而不是 61440(十进制),反之亦然。

实际上,如果您将对话框设置为十进制,输入 46,然后更改为十六进制,您会看到“数值数据”自动更改为 2e...

它会在主详细信息窗格中显示两个值:

同样,在编写 PowerShell 代码时,您可以编写 $desiredValue = 46$desiredValue = 0x2E 并获得相同的结果。它们都是同一个数字的表示形式 - 这取决于您使用哪种格式的偏好。

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 2023-03-14
    • 2018-06-05
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 2018-07-26
    相关资源
    最近更新 更多