[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] 注册表解析环境变量%SystemRoot%不正确,请老师指正。谢谢!


Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\Shell\CMDCMD]
@="CMDCMD"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\Shell\CMDCMD\Command]
@="%SystemRoot%\\System32\\Cmd"

导入注册表后,右击文件夹,点击CMDCMD时警告:Windows 无法访问

但用 @="C:\\Windows\\System32\\Cmd" 替换掉 @="%SystemRoot%\\System32\\Cmd" 则正常打开。

要怎样设置%SystemRoot%,注册表才能解析?

谢谢啦!

回复 2# WHY

好办法!详细周到,效果很好,谢谢 WHY 兄!

TOP

本帖最后由 WHY 于 2023-2-23 19:58 编辑

注册表默认值数据类型为REG_SZ
包含有 %SystemRoot% 变量的类型应该是 REG_EXPAND_SZ

可以直接用批处理命令:
  1. @echo off
  2. reg add "HKLM\SOFTWARE\Classes\Folder\Shell\CMDCMD" /ve /d "CMDCMD"
  3. reg add "HKLM\SOFTWARE\Classes\Folder\Shell\CMDCMD\Command" /ve /t REG_EXPAND_SZ /d "%%SystemRoot%%\System32\Cmd"
  4. pause
复制代码
如果一定要用reg文件导入,可以这样:
打开 PowerShell 控制台窗口,输入命令:
  1. ([char[]]'%SystemRoot%\System32\Cmd'|%{([int]$_).ToString('X')+',00'}) -join ','
复制代码
得到一串值:
25,00,53,00,79,00,73,00,74,00,65,00,6D,00,52,00,6F,00,6F,00,74,00,25,00,5C,00,53,00,79,00,73,00,74,00,65,00,6D,00,33,00,32,00,5C,00,43,00,6D,00,64,00
把这串值写入reg文件:
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\Shell\CMDCMD]
  3. @="CMDCMD"
  4. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\Shell\CMDCMD\Command]
  5. @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6D,00,52,00,6F,00,6F,00,74,00,25,00,5C,\
  6. 00,53,00,79,00,73,00,74,00,65,00,6D,00,33,00,32,00,5C,00,43,00,6D,00,64,00
复制代码
2

评分人数

    • Shuye: 详细周到,效果很好!技术 + 1
    • 77七: 专业技术 + 1

TOP

返回列表