REG QUERY HKLM /v SelectiveSuspendFeatureOn /s
REG QUERY HKLM /v EnableSelectiveSuspend /s
示例输出:
C:\Users\asd\Desktop>REG QUERY HKLM /v SelectiveSuspendFeatureOn /s
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\GemCCID SelectiveSuspendFeatureOn REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\GemCCID SelectiveSuspendFeatureOn REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\GemCCID SelectiveSuspendFeatureOn REG_DWORD 0x1
搜索结束:找到3个匹配项。
C:\Users\asd\Desktop>REG QUERY HKLM /v EnableSelectiveSuspend /s
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\IUSB3\ROOT_HUB30\4&22fe6fd&0\Device Parameters EnableSelectiveSuspend REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\IUSB3\ROOT_HUB30\4&22fe6fd&0\Device Parameters EnableSelectiveSuspend REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IUSB3\ROOT_HUB30\4&22fe6fd&0\De vice Parameters EnableSelectiveSuspend REG_DWORD 0x1
搜索结束:找到3个匹配项。
现在,我能够扫描这些位置并获取注册表路径,我想将它们每一个都设置为0,所以我找到并使用了这个.bat文件:
@echo off
cls
:startreg
cls
set regq= REG QUERY HKLM /v SelectiveSuspendFeatureOn /s %curuser%
for /f "tokens=* delims=~" %%A IN ('%regq% ^| findstr /i "HKEY_LOCAL_MACHINE"') DO set regkey=%%A
Reg add %regkey% /v SelectiveSuspendFeatureOn /t REG_DWORD /d 0 /f
rem Reg add %regkey% /v EnableSelectiveSuspend /t REG_DWORD /d 0 /f
pause
exit
现在问题出现了,我有两个与.bat本身相关的请求/问题:
- 应将
REQ QUERY
列出的每个项目都使用REG ADD
命令设置为0-因此,我认为这应该以某种方式进行循环处理?输出命令必须生成到.reg文件中(下面是示例)。 - 如何添加第二个选项来启用选择性暂停,是否有一种方法可以对其进行双重循环?
@@ EDIT.1 @@
结果证明,某些注册表键无法通过.bat更改(无法读取路径),因此应生成.reg文件:
正确的.reg文件示例:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\GemCCID] "SelectiveSuspendFeatureOn"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\services\GemCCID] "SelectiveSuspendFeatureOn"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\GemCCID] "SelectiveSuspendFeatureOn"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Enum\IUSB3\ROOT_HUB30\4&32305751&0\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Enum\USB\VID_0424&PID_2512\5&36b4634f&0&3\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Enum\USB\VID_0424&PID_2514\6&234568e7&0&1\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IUSB3\ROOT_HUB30\4&32305751&0\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0424&PID_2512\5&36b4634f&0&3\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0424&PID_2514\6&234568e7&0&1\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
期待您的答复。
Patryk
@@ EDIT 2 @@
我设法创建所需的逻辑:
@echo off
cls
:startreg
cls
echo Scanning computer in order to apply Power Managment adjustments for USB readers
set NLM=^
set NL=^^^%NLM%%NLM%^%NLM%%NLM%
echo Windows Registry Editor Version 5.00 > %1/scanned.reg
echo. >> %1/scanned.reg
set regq= REG QUERY HKLM /v SelectiveSuspendFeatureOn /s %curuser%
for /f "tokens=* delims=\\n" %%A IN ('%regq% ^| findstr /i "HKEY_LOCAL_MACHINE"') DO echo [%%A] >> %1/scanned.reg & echo "SelectiveSuspendFeatureOn"=dword:00000000 >> %1/scanned.reg & echo. >> %1/scanned.reg
set regq= REG QUERY HKLM /v EnableSelectiveSuspend /s %curuser%
for /f "tokens=* delims=\\n" %%A IN ('%regq% ^| findstr /i "HKEY_LOCAL_MACHINE"') DO echo [%%A] >> %1/scanned.reg & echo "EnableSelectiveSuspend"=dword:00000000 >> %1/scanned.reg & echo. >> %1/scanned.reg
regedit.exe /S %1/scanned.reg
exit
这个程序会扫描Windows注册表,将这些值保存为.reg文件,并最终运行.reg文件来应用更改。
在注册表更新后,需要重新启动系统。
这个程序添加了“路径”参数,所以你应该使用参数(例如“C:”或任何其他路径)运行这个.bat文件。
\CurrentControlSet004\
键,这可能表明您以前曾遭受过注册表损坏。您附加为编辑的脚本设置了两个未使用的变量,包含一个未定义的变量,并且似乎在运行之前将参数作为输入进行了处理,而没有进行验证。 - Compo