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

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

我想添加一个扩展的注册表项,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^%

它成功完成,但注册表中的更改仍然没有完成。密钥MyCo不存在。

我可能执行的命令有问题吗reg add?还有其他方法可以将REG_EXPAND_SZ具有名称的类型条目添加(Default)到注册表吗?

更新:

Microsoft 的示例确实有效,但为了查看更改,您需要打开注册表编辑器的新实例(已经运行的实例由于某种原因不会更新)

答案1

您不能使用 RegEdit 来执行此操作。(或者至少我认为您不能这样做!)..

使用 reg.exe 命令行将其拉下来。 reg.exe add <key_name> /ve /t REG_EXPAND_SZ /d "%path%"(例如)。

答案2

为了记录,创建(Default)类型值的其他方法REG_EXPAND_SZ

  1. 如果您更喜欢直接在 中创建键/值RegEdit,这样可以更轻松地编写带有嵌入引号和斜杠的字符串值,然后您可以让Regedit完成转义特殊字符和编码 unicode 字符串的工作。要创建(Default)类型的值REG_EXPAND_SZ

    1. 创建密钥。
    2. temp创建一个名为类型的值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



编辑后:

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"=-


合并后: 在此处输入图片描述

  1. PowerShell 也是一个选项。

     $Splat = @{
       'Path'     = 'HKCR:\SOFTWARE\DummySoftware2\Path'
       'Value     = '%UserProfile%\DummySoftware2'
       'ItemType' = 'ExpandString'
       'Force'    = $False
     }
     New-Item $Splat
    

在此处输入图片描述

相关内容