Board logo

标题: [注册表类] 【已解决】注册表文件转批处理后无法运行导入 [打印本页]

作者: Nikki    时间: 2025-1-24 11:40     标题: 【已解决】注册表文件转批处理后无法运行导入

本帖最后由 Nikki 于 2025-1-24 14:57 编辑

注册表文件自身可以直接双击导入,但转换成批处理却不行,尝试的方法如下:

①将注册表用 reg2cmd.exe 等工具转换成 reg add 形式的命令再运行导入,带命令的 Command 子项未能导入:“指定的路径无效”、“找不到网络路径”。

②将注册表转换成 powershell -Command "XXXXXX" 的形式,再用批处理运行导入,报错结果同上。

③原样写入注册表内容到临时文件 %regfile%,然后再以 regedit /s %regfile% 命令导入,发现带命令的 Command 子项未能输出到临时文件中。

④将注册表以二进制或十六进制嵌入,这个看着就复杂而且后期也不便于直接在 notepad 编辑,所以放弃了...

注册表代码如下,作用是添加右键菜单项:
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\CopyContent]
  3. "Icon"="DxpTaskSync.dll,-52"
  4. "MUIVerb"="复制内容到剪切板"
  5. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\CopyContent\Command]
  6. @="mshta vbscript:createobject(\"shell.application\").shellexecute(\"cmd.exe\",\"/c clip < \"\"%1\"\"\",\"\",\"open\",0)(close)"
  7. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\GetHash]
  8. "Icon"="imageres.dll,-5372"
  9. "MUIVerb"="获取哈希值"
  10. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\GetHash\Command]
  11. @="mshta vbscript:createobject(\"shell.application\").shellexecute(\"powershell.exe\",\"-noexit write-host '\"\"%1\"\"';$args = 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'mactripledes', 'ripemd160'; foreach($arg in $args){get-filehash '\"\"%1\"\"' -algorithm $arg | select-object algorithm, hash | format-table -wrap}\",\"\",\"open\",3)(close)"
复制代码
本人批处理小白,上述转换过程使用了 Copilot、GPT4o、通义千问、文心一言等AI工具,无一例外都失败了,这里求助各位大佬,感激不尽!
作者: flashercs    时间: 2025-1-24 14:03

本帖最后由 flashercs 于 2025-1-24 14:28 编辑

这是人干的活吗?多一个.reg文件怎么了?
  1. @echo off
  2. reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\CopyContent" /v "Icon" /t REG_SZ /d "DxpTaskSync.dll,-52" /f
  3. reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\CopyContent" /v "MUIVerb" /t REG_SZ /d "复制内容到剪切板" /f
  4. reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\CopyContent\Command" /ve /t REG_SZ /d "mshta vbscript:createobject(\"shell.application\").shellexecute(\"cmd.exe\",\"/c clip ^< \"\"%%1\"\"\",\"\",\"open\",0)(close)" /f
  5. reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\GetHash" /v "Icon" /t REG_SZ /d "imageres.dll,-5372" /f
  6. reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\GetHash" /v "MUIVerb" /t REG_SZ /d "获取哈希值" /f
  7. reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\GetHash\Command" /ve /t REG_SZ /d "mshta vbscript:createobject(\"shell.application\").shellexecute(\"powershell.exe\",\"-noexit write-host '\"\"%%1\"\"';$args = 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'mactripledes', 'ripemd160'; foreach($arg in $args){get-filehash '\"\"%%1\"\"' -algorithm $arg ^| select-object algorithm, hash ^| format-table -wrap}\",\"\",\"open\",3)(close)" /f
  8. pause
复制代码

作者: Nikki    时间: 2025-1-24 14:54

回复 2# flashercs

感谢大佬相助!辛苦辛苦,没有单独用.reg是想把命令集成在一个文件中
刚把您的命令和我之前对比了,才发现没有用"^"转义"<"、"|",确实学到了,感谢!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2