禁用允许 Windows 以通过批处理循环为 USB 设备节省电量
Disabling allowance of Windows to save power for USB devices via batch loop
亲爱的,
我一直在努力研究如何禁用 Windows 的允许以节省 USB 阅读器的电量,最后使用 RegShot 我设法找到了负责这些设置的注册表输入,所以我设法创建两个正在扫描计算机的 reg 查询:
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
End of search: 3 match(es) found.
C:\Users\asd\Desktop>REG QUERY HKLM /v EnableSelectiveSuspend /s
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\IUSB3\ROOT_HUB30&22fe6fd&0\Device Parameters
EnableSelectiveSuspend REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\IUSB3\ROOT_HUB30&22fe6fd&0\Device Parameters
EnableSelectiveSuspend REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IUSB3\ROOT_HUB30&22fe6fd&0\De vice Parameters
EnableSelectiveSuspend REG_DWORD 0x1
End of search: 3 match(es) found.
现在,在我能够扫描这些位置并获取注册表路径之后,我想将它们中的每一个都设置为 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
现在这就是我卡住的地方,我有两个 requests/questions 与 .bat 本身相关:
- REQ QUERY 中列出的每个项目都应使用 REG ADD 命令设置为 0 - 所以我认为这应该以某种方式循环?输出命令必须生成到 .reg 文件(下面的示例)
- 如何为 EnableSelectiveSuspend 添加第二个选项,有没有双循环的方法?
@@ 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&32305751&0\Device
Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Enum\USB\VID_0424&PID_2512&36b4634f&0&3\Device
Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Enum\USB\VID_0424&PID_2514&234568e7&0&1\Device
Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IUSB3\ROOT_HUB30&32305751&0\Device
Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0424&PID_2512&36b4634f&0&3\Device
Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0424&PID_2514&234568e7&0&1\Device
Parameters] "EnableSelectiveSuspend"=dword:00000000
期待您的回答。
帕特里克
@@ 编辑 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 文件应用到更改。
注册更新后 - 需要重新启动系统。
此文件添加了参数 "path",因此您应该 运行 此 .bat 带有参数,例如 "C:" 或任何其他路径。
我设法创建了我需要的逻辑:
@echo off
cls
:startreg
cls
echo Scanning computer in order to apply Power Managment adjustments for USB readers
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 文件应用到更改。
注册更新后 - 需要重新启动系统。
此文件添加了参数 "path",因此您应该 运行 此 .bat 带有参数,例如 "C:" 或任何其他路径。
亲爱的, 我一直在努力研究如何禁用 Windows 的允许以节省 USB 阅读器的电量,最后使用 RegShot 我设法找到了负责这些设置的注册表输入,所以我设法创建两个正在扫描计算机的 reg 查询:
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
End of search: 3 match(es) found.
C:\Users\asd\Desktop>REG QUERY HKLM /v EnableSelectiveSuspend /s
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\IUSB3\ROOT_HUB30&22fe6fd&0\Device Parameters EnableSelectiveSuspend REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\IUSB3\ROOT_HUB30&22fe6fd&0\Device Parameters EnableSelectiveSuspend REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IUSB3\ROOT_HUB30&22fe6fd&0\De vice Parameters EnableSelectiveSuspend REG_DWORD 0x1
End of search: 3 match(es) found.
现在,在我能够扫描这些位置并获取注册表路径之后,我想将它们中的每一个都设置为 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
现在这就是我卡住的地方,我有两个 requests/questions 与 .bat 本身相关:
- REQ QUERY 中列出的每个项目都应使用 REG ADD 命令设置为 0 - 所以我认为这应该以某种方式循环?输出命令必须生成到 .reg 文件(下面的示例)
- 如何为 EnableSelectiveSuspend 添加第二个选项,有没有双循环的方法?
@@ 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&32305751&0\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Enum\USB\VID_0424&PID_2512&36b4634f&0&3\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet004\Enum\USB\VID_0424&PID_2514&234568e7&0&1\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IUSB3\ROOT_HUB30&32305751&0\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0424&PID_2512&36b4634f&0&3\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0424&PID_2514&234568e7&0&1\Device Parameters] "EnableSelectiveSuspend"=dword:00000000
期待您的回答。
帕特里克
@@ 编辑 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 文件应用到更改。
注册更新后 - 需要重新启动系统。
此文件添加了参数 "path",因此您应该 运行 此 .bat 带有参数,例如 "C:" 或任何其他路径。
我设法创建了我需要的逻辑:
@echo off
cls
:startreg
cls
echo Scanning computer in order to apply Power Managment adjustments for USB readers
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 文件应用到更改。
注册更新后 - 需要重新启动系统。
此文件添加了参数 "path",因此您应该 运行 此 .bat 带有参数,例如 "C:" 或任何其他路径。