标题: [注册表类] 【已解决】求助 批处理对注册表中模糊路径的编辑 [打印本页]
作者: jimmy2008317 时间: 2023-4-17 12:25 标题: 【已解决】求助 批处理对注册表中模糊路径的编辑
本帖最后由 jimmy2008317 于 2023-4-20 08:52 编辑
大神,能帮忙给改一下这个吗
目的:导入一个U盘上的【X:\Windows\System32\config\SYSTEM】系统文件到注册表,作为HKEY_LOCAL_MACHINE 下的子项wtgsys
修改这个子项中【wtgsys\ControlSet001\Enum\USB\VID_XXXX&ID_XXXX\XXXXXXXX】的几个值
然后卸载wtgsys项
困难:"VID_XXXX&PID_XXXX" 和 后面的"XXXXXXXX”每个电脑都不一样
其中"VID_XXXX&PID_XXXX" 可以通过别的软件获得,但后面的"XXXXXXXX” 就不行(【hklm\wtgsys\ControlSet001\Enum\USB\VID_XXXX&PID_XXXX】路径下只有XXXXXXXX这一个项)
您能给一下如何寻找路径中XXXX吗(【hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%】路径下只有XXXX这一个项)
附:有办法通过批处理获得U盘的VID、PID吗
万分感谢
目前代码:- @echo off
- color b
- reg unload HKEY_LOCAL_MACHINE\wtgsys
- cls
- title 启动WTG系统拔出冻结(测试版)
- echo 启动WTG系统拔出冻结(测试版)
-
- ping /n 2 127.1>nul
- echo 加载注册表
- echo (如果电脑上仅有一个WTG系统,直接按enter,否则输入对应盘盘符 格式“X:”)
- set /p in=
-
- for %%a in (E: F: G: H: I:) do (
- if exist %%a\ (
- if "%%a"=="%in%" goto inload
- )else echo 无%%a盘
- )
-
- for %%a in (E: F: G: H: I:) do (
- if exist %%a\ (
- echo 在%%a盘加载
- reg load HKEY_LOCAL_MACHINE\wtgsys %%a\Windows\System32\config\SYSTEM
- )else echo 无%%a盘
- )
-
- :ID
- ping /n 5 127.1>nul
- cls
- echo 请输入VID 例:174C
- set /p VID=
- echo 请输入PID 例:55AA
- set /p PID=
- echo 请输入MSFT序列号 例:60SSFD42521AF031BB8
- set /p MSFT=
- if "%VID%"=="" goto err
- if "%PID%"=="" goto err
- if "%MSFT%"=="" goto err
- cls
- echo 请确认
- echo VID: %VID%
- echo PID: %PID%
- echo 序列号: %MSFT%
- pause
-
- reg add hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%\%MSFT% /v DeviceDesc /d "@usbstor.inf,%genericbulkonly.devicedesc%;USB Mass Storage Device" /f
- reg add hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%\%MSFT% /v Capabilities /t REG_DWORD /d "148" /f
- reg add hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%\%MSFT% /v Service /t REG_SZ /d USBSTOR /f
- reg add hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%\%MSFT% /v Mfg /t REG_SZ /d "@usbstor.inf,%generic.mfg%;Compatible USB storage device" /f
-
- reg unload HKEY_LOCAL_MACHINE\wtgsys
-
- echo 冻结完成
-
- ping /n 5 127.1>nul
- exit
-
- :err
- echo 输入为空
- goto ID
-
- :inload
- echo 在%in%盘
- reg load HKEY_LOCAL_MACHINE\wtgsys %in%\Windows\System32\config\SYSTEM
- goto ID
复制代码
作者: newswan 时间: 2023-4-17 14:06
- for /f "usebackq delims=" %%a in (`reg query "hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%^&PID_%PID%"`) do echo %%a
复制代码
作者: Batcher 时间: 2023-4-17 16:33
回复 1# jimmy2008317
打开CMD窗口,执行命令:- reg query HKEY_LOCAL_MACHINE\wtgsys\ControlSet001\Enum\USB\VID_XXXX&PID_XXXX /s
复制代码
结果发出来,说明一下需要获取哪部分字符串?
如果需要上传文件,可以用阿里云盘或百度网盘。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: jimmy2008317 时间: 2023-4-17 17:48
回复 3# Batcher
好了https://imgse.com/i/p9Ppmp4
麻烦您了
作者: jimmy2008317 时间: 2023-4-17 17:52
回复 2# newswan
好像不行
https://imgse.com/i/p9P9gIK
作者: Batcher 时间: 2023-4-17 18:03
回复 4# jimmy2008317
试试这样能否获取到- @echo off
- for /f "delims=" %%i in ('reg query HKEY_LOCAL_MACHINE\wtgsys\ControlSet001\Enum\USB\VID_174C^&PID_55AA /s ^| findstr "wtgsys"') do (
- set "MyStr=%%~nxi"
- goto :ShowReg
- )
-
- :ShowReg
- echo,%MyStr%
- pause
复制代码
作者: newswan 时间: 2023-4-17 21:12
回复 5# jimmy2008317
刚才复制你的文本,里面是不是多了个 ^
作者: jimmy2008317 时间: 2023-4-18 12:11
回复 7# newswan
删了之后可以找到路径了,但能不能把%%a赋值到一个全局量上
https://imgse.com/i/p9Pb191
是输出的代码有问题吗
输出就是 0- for /f "usebackq delims=" %%a in (`reg query "hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%&PID_%PID%"`) do echo %%a & set /a ph="%%a"
- echo %ph%
- PAUSE
- ping /n 5 127.1>nul
- PAUSE
复制代码
作者: jimmy2008317 时间: 2023-4-18 12:13
本帖最后由 jimmy2008317 于 2023-4-18 12:21 编辑
回复 6# Batcher
您的代码打完后显示一个“此处不应有X”(一闪而过,X看不清)
截到了:https://imgse.com/i/p9PqCDO
2楼的思路似乎可以(回复在8楼)
作者: Batcher 时间: 2023-4-18 14:42
回复 8# jimmy2008317
改成这样试试:- for /f "usebackq delims=" %%a in (`reg query "hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%&PID_%PID%"`) do (
- echo,%%a
- set "ph=%%a"
- goto :ShowReg
- )
-
- :ShowReg
- echo,%ph%
- pause
复制代码
作者: Batcher 时间: 2023-4-18 14:48
回复 9# jimmy2008317
6楼代码改成这样:- @echo off
- for /f "delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\wtgsys\ControlSet001\Enum\USB\VID_174C&PID_55AA" /s ^| findstr "wtgsys"') do (
- set "MyStr=%%~nxi"
- goto :ShowReg
- )
-
- :ShowReg
- echo,%MyStr%
- pause
复制代码
作者: newswan 时间: 2023-4-18 15:47
回复 8# jimmy2008317 - @echo off
- setlocal ENABLEDELAYEDEXPANSION
-
- for /f "usebackq delims=" %%a in (`reg query "hklm\wtgsys\ControlSet001\Enum\USB\VID_%VID%&PID_%PID%"`) do (
- echo %%a
- set "ph=%%a"
- echo !ph!
- )
复制代码
作者: jimmy2008317 时间: 2023-4-18 17:43
本帖最后由 jimmy2008317 于 2023-4-18 18:01 编辑
回复 11# Batcher
现在结果是:Batcher大神改的newsman大神的代码 成功了,newsman大神的在输出时不能去掉 ' "" ' 因此在后面的部分无法使用
感谢两位大神的帮助
附:有办法获得电脑上插着的唯一U盘的 VID、PID号吗
作者: Batcher 时间: 2023-4-18 22:43
回复 13# jimmy2008317
test-usb-1.bat- # & cls & @cd /d "%~dp0" & powershell -c "Get-Content '%~0' | Out-String | Invoke-Expression " & pause & exit /b
- Get-CimInstance -ClassName Win32_USBHub | ForEach-Object {
- if (($_.Status -eq "OK") -and ($_.Name -eq "USB 大容量存储设备")) {
- $MyVID = $_.PNPDeviceID.Substring(8,4)
- $MyPID = $_.PNPDeviceID.Substring(17,4)
- }
- }
- "VID is " + $MyVID
- "PID is " + $MyPID
复制代码
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
作者: jimmy2008317 时间: 2023-4-19 12:30
回复 14# Batcher
似乎不行
https://imgse.com/i/p9FC3SU
不过在网上找到一个思路
https://imgse.com/i/p9FCdFx
这个好像能读取到VID、PID、序列号(序列号就不需要了)
这样有可能吗
作者: Batcher 时间: 2023-4-19 13:00
回复 15# jimmy2008317
你的系统是Win7? Win10? Win11? 把你的PowerShell升级到高版本试试吧
作者: Batcher 时间: 2023-4-19 13:41
回复 15# jimmy2008317 - @echo off
- for /f "tokens=3" %%i in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\USBSTOR\Enum" ^| findstr "USB"') do (
- set "MyUSB=%%i"
- )
- set MyVID=%MyUSB:~8,4%
- set MyPID=%MyUSB:~17,4%
- echo,VID is %MyVID%
- echo,PID is %MyPID%
- pause
复制代码
作者: jimmy2008317 时间: 2023-4-19 20:22
回复 17# Batcher
感谢大佬(如何加技术分)
作者: Batcher 时间: 2023-4-19 20:58
回复 18# jimmy2008317
批处理之家论坛使用常见问题FAQ
http://bbs.bathome.net/thread-3473-1-1.html
作者: jimmy2008317 时间: 2023-4-21 12:32
回复 17# Batcher
感谢大佬,学到了提取一个量的制定部分:%量%:~X(开始读取的位置),Y(读取的位数)%
for 执行指定次数 for /f "tokens=X (进行次数) " %%i in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\USBSTOR\Enum" ^| findstr "USB"') do (
)
使用^符号:“”内已经转义,不需要使用
十分感激
作者: Batcher 时间: 2023-4-21 16:38
回复 20# jimmy2008317
作者: jimmy2008317 时间: 2023-4-22 18:16
回复 21# Batcher
现在彻底明白了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |