创建具有名为(默认)的可扩展字符串值的注册表项?

Ahu*_*Lee 3 windows windows-registry

我想添加一个扩展的注册表项,HKCR\Drive\shell\Cmder\command其值名为(Default).

如果我使用注册表编辑器,它会自动添加一个REG_SZ带有名称的字符串值类型Default。此后无法更改该值的类型或无法删除该值(以便用新值替换)。

reg add如果我在命令行或文件中使用,.reg它表示操作已成功完成,或者已成功添加键和值,但并未真正进行注册表更改。

为了确保不存在语法错误,这是来自docs.microsoft.com的示例,该示例应添加一个扩展的注册表项,HKLM\Software\MyCo其值名为、Path类型REG_EXPAND_SZ和数据%systemroot%

reg add HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d ^%systemroot^%
Run Code Online (Sandbox Code Playgroud)

它成功完成,但注册表中的更改仍然没有进行。钥匙MyCo不在那里。

我的命令可能做错了什么吗reg add?是否有其他方法可以将REG_EXPAND_SZ带有名称的类型条目添加(Default)到注册表中?

更新:

Microsoft 示例实际上可以工作,但为了查看更改,您需要打开注册表编辑器的新实例(已运行的实例由于某种原因不会更新)

Kei*_*ler 5

作为记录,创建(Default)type 值的其他方法REG_EXPAND_SZ

  1. 如果您更喜欢直接在 中创建键/值RegEdit,这使得嵌入引号和斜杠的字符串值更容易编写,那么您可以让其Regedit完成转义特殊字符和编码 unicode 字符串的工作。要创建(Default)类型的值REG_EXPAND_SZ

    1. 创建密钥。
    2. 使用您想要的值创建一个名为temptype 的值。REG_EXPAND_SZ(Default)
    3. 导出到 .reg 文件。
    4. 编辑文件,剪切"temp"到剪贴板,然后替换为@. 然后,添加一个新行,然后"temp"粘贴=-
    5. 保存并合并。

在此输入图像描述

注册表导出:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\DummySoftware\Path]
"temp"=hex(2):25,00,55,00,73,00,65,00,72,00,50,00,72,00,6f,00,66,00,69,00,6c,\
  00,65,00,25,00,5c,00,44,00,75,00,6d,00,6d,00,79,00,53,00,6f,00,66,00,74,00,\
  57,00,61,00,72,00,65,00,00,00



Run Code Online (Sandbox Code Playgroud)

编辑后:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\DummySoftware\Path]
@=hex(2):25,00,55,00,73,00,65,00,72,00,50,00,72,00,6f,00,66,00,69,00,6c,\
  00,65,00,25,00,5c,00,44,00,75,00,6d,00,6d,00,79,00,53,00,6f,00,66,00,74,00,\
  57,00,61,00,72,00,65,00,00,00

"temp"=-


Run Code Online (Sandbox Code Playgroud)

合并后: 在此输入图像描述

  1. PowerShell 也是一种选择。

     $Splat = @{
       'Path'     = 'HKCR:\SOFTWARE\DummySoftware2\Path'
       'Value     = '%UserProfile%\DummySoftware2'
       'ItemType' = 'ExpandString'
       'Force'    = $False
     }
     New-Item $Splat
    
    Run Code Online (Sandbox Code Playgroud)

在此输入图像描述