找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17374|回复: 2

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

[复制链接]
发表于 2023-2-23 18:23:24 | 显示全部楼层 |阅读模式

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%,注册表才能解析?

谢谢啦!
发表于 2023-2-23 19:09:51 | 显示全部楼层
本帖最后由 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技术 +2 收起 理由
Shuye + 1 详细周到,效果很好!
77七 + 1 专业

查看全部评分

 楼主| 发表于 2023-2-24 00:31:33 | 显示全部楼层
回复 2# WHY

好办法!详细周到,效果很好,谢谢 WHY 兄!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 02:28 , Processed in 0.017916 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表