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

[注册表类] BAT 处理注册表中包含“”的 项

[复制链接]
发表于 2025-4-29 22:17:02 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-29 22:19 编辑

回复 15# wzehu

也许你的XP没有预装 mshta.exe?
那就再试试以下用批处直调 vbs 的版本(先提权再删除注册表指定项),存为 test.bat 运行...

  1. @echo off &fltmc>nul 2>&1
  2. if %errorlevel% equ 0 goto :gotAdm
  3. set/p="createObject("Shell.Application").ShellExecute "%~f0", "", "", "runas", 1"<nul>"getAdm.vbs"
  4. cscript /nologo "getAdm.vbs" &del /q "getAdm.vbs" &exit/b
  5. :gotAdm
  6.    reg delete "HKEY_CLASSES_ROOT\*\shell\用"记事本"打开" /f
  7. pause&exit/b
复制代码
发表于 2025-4-30 12:56:34 | 显示全部楼层
本帖最后由 flashercs 于 2025-5-1 10:37 编辑

特性        Windows XP        Windows Vista及以上
支持 runas verb        &#10060; 不支持        &#9989; 支持
支持 UAC        &#10060; 不支持        &#9989; 支持
ShellExecute("runas") 行为        静默失败        弹出UAC提权窗口

XP系统不支持 "runas"
不能使用runas.exe,且没有管理员权限,只能覆盖当前用户的注册表:
  1. reg add "HKEY_CURRENT_USER\Software\Classes\*\shell\用"记事本"打开\command" /ve /d "" /f
复制代码

评分

参与人数 1技术 +1 收起 理由
wzehu + 1 乐于助人

查看全部评分

发表于 2025-5-1 00:02:58 | 显示全部楼层
回复 14# wzehu

查看 xp 年代的老帖,流传一个 ‘一键开启cmd提权窗口’ 的方法》先点击桌面左下角进入 '开始' 界面,直接键入 cmd 出现 'cmd 命令提示符' 搜索结果,此时用 ctrl+shift+enter 组合键即可开启cmd提权窗口...
 楼主| 发表于 2025-5-1 11:27:04 | 显示全部楼层
本帖最后由 wzehu 于 2025-5-1 17:52 编辑

回复 18# aloha20200628

主题是:代码+方法,过程 而不是结果。达到结果有很多方法,都能完成。要  BAT  VBS  在 XP 中完成方法。
发表于 2025-5-1 11:52:27 | 显示全部楼层
xp又没有session 0隔离 ,直接管理员账号运行就行了
xp一般都是直接用Administrator这个账号的吧 ,直接运行即可
发表于 2025-5-1 12:08:17 | 显示全部楼层
回复 19# wzehu

16楼的 bat+vbs 代码运行结果如何?还有报错信息吗?
 楼主| 发表于 2025-5-1 18:07:32 | 显示全部楼层
回复 21# aloha20200628
               BAT 运行  @aloha20200628 16楼 代码时提示
                    错误: 系统找不到指定的注册表项或值
    将“   reg add "HKEY_CLASSES_ROOT\*\shell\用\"记事本\"打开" /f    “
    代换原码后,结果:操作成功结束。但,注册表多出了个 “HKEY_CLASSES_ROOT\*\shell\用”项。。
    所有文件右键同时多了个   ”用“。。。BAT处理”“失败。。。
 楼主| 发表于 2025-5-1 18:11:08 | 显示全部楼层
回复 20# Five66


    xp 无密码登录,Administrator  ”  “  密码没有 权限。。
 楼主| 发表于 2025-5-1 18:56:27 | 显示全部楼层
回复 17# flashercs

    你好!
    即使  “reg add "HKEY_CURRENT_USER\Software\Classes\*\shell\用\"记事本\"打开\command" /ve /d "" /f  ”
    能以覆盖方式清除  command “***” 的值,但在 所有文件右键 还遗留有 “用记事本打开” 的无效项,没得到结果。
发表于 2025-5-1 19:25:00 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-1 19:41 编辑

回复 22# wzehu

如此运行结果至少证明16楼的 bat+vbs 代码已经取得 cmd 提权,否则会被代码第2行的检测拦截而导致反复启运3-4行的提权代码... 而报错信息则表明用 reg delete ... 未能匹配其中的 \"...\" 转义字段,楼主可用以下这行代码替换第6行再试试...

  1. reg delete "HKEY_CLASSES_ROOT\*\shell\用"""记事本"""打开" /f
复制代码
另问楼主》无论在 xp 系统中你用何种方法开启了 cmd 管理员身份窗口,在其中命令行直接运行以下任一行代码是否能够成功?

  1. reg delete "HKEY_CLASSES_ROOT\*\shell\用"记事本"打开" /f
  2. reg delete "HKEY_CLASSES_ROOT\*\shell\用"""记事本"""打开" /f
复制代码
 楼主| 发表于 2025-5-1 22:15:34 | 显示全部楼层
回复 25# aloha20200628


   用BAT写 REG 只要不是个别特出情况,都正常运行成功。
   原码  add 方式不能处理 ”“, 运行时只通过  用 字,丢弃了 “记事本”打开  。
   对于 个别特出情况 的 “记事本” 它无能为力。
   delete  方式则直接 找不到**出错。因为代码没权限处理 “”
   所以说,原代码 “已经取得 cmd 提权 ” 是你的误解。

   reg delete "HKEY_CLASSES_ROOT\*\shell\用"""记事本"""打开" /f
   你只是看到 "记事本",没考虑整个字符串外面,还被一对 “” 包裹。
   请分析  "HKEY_CLASSES_ROOT\*\shell\用"   ”“ 记事本"”  “打开"
   它是  sing1 + sing2 + sing3。要是不把  ”“ = ”  的话,那就更乱。
   因此,代码有误。。。
 楼主| 发表于 2025-5-1 22:56:43 | 显示全部楼层
回复 16# aloha20200628

在你代码中加了点**。  :
@echo off &fltmc>nul 2>&1
                                 ::if %errorlevel% equ 0 goto :gotAdm
set/p="createObject("Shell.Application").ShellExecute "%~f0", "", "", "runas",

1"<nul>"getAdm.vbs"
type getAdm.vbs & pause

cscript /nologo "getAdm.vbs" &del /q "getAdm.vbs" &exit/b
:gotAdm
   echo IIs Help
   reg add "HKEY_CLASSES_ROOT\*\shell\用\"记事本\"打开" /f
pause&exit/b
   
你试着运行一次,  再去掉  if 前的:: 运行一次
你将会改变 你对原码的认知。  试试看,蛮用趣。。。
发表于 2025-5-1 23:40:20 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-2 00:02 编辑

回复 27# wzehu

- 因手边没有 xp 系统,不能直接验证调试,只能与你隔空来回...
- win8 以上高版系统已经测试过,只要在提权cmd命令行直接运行25楼任一行代码,均可成功删除注册表指定项,即这两种 '双引号转义' 方法均被认可
- 就想知道你在 xp 系统的提权cmd命令行运行25楼任一行代码的结果》以便澄清 '删除未果' 究竟是提权后未能正确匹配注册表指定项的问题?还是提权后也不允许删除注册表指定项的问题?
- 还可用以下两行代码直接在xp命令行运行的返回值来测试这两种 '双引号转义' 方法能否匹配注册表指定项的问题...
reg query "HKEY_CLASSES_ROOT\*\shell\用\"记事本\"打开"
reg query "HKEY_CLASSES_ROOT\*\shell\用"""记事本"""打开"
发表于 2025-5-2 08:28:09 | 显示全部楼层
本帖最后由 czjt1234 于 2025-5-2 08:31 编辑

回复 28# aloha20200628


zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso
虚拟机测试,未做任何设置和优化

25楼的2种 \"记事本\" 和 """记事本""" 都提示找不到指定的注册表项和值
""记事本"" 和 ^"记事本^" 也一样

非administrators用runas可以提权,但必须输入管理员密码,不能是空密码
提权后 regedit /s 1.reg 可以添加和删除注册表项,1.reg里是 "记事本"

评分

参与人数 1技术 +1 收起 理由
wzehu + 1 跟我的测试结果相同。【赞】

查看全部评分

发表于 2025-5-2 12:04:49 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-2 12:59 编辑

回复 27# wzehu
回复 29# czjt1234
谢谢29楼的测试结果!
本帖后来的焦点是 '能否在xp系统的注册表中用 reg delete ... 删除内含双引号的路径项'
好吧,让我们回到原点,作为最后一个问题》
   如果路径项不包含双引号,如 "HKEY_CLASSES_ROOT\*\shell\用记事本打开",
   用 reg delete "HKEY_CLASSES_ROOT\*\shell\用记事本打开" 这一行代码,在提权cmd命令行运行能够成功删除吗?
   如是,表明我们还没有找到有效的双引号匹配方法,
   如否,表明xp无论如何也不给 reg delete ... 删除权限?! ...

评分

参与人数 1技术 +1 收起 理由
wzehu + 1 见 26楼, 用BAT写 REG 只要不是个别特出 ...

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:12 , Processed in 0.023990 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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