标题: [注册表类] 批处理如何判断计算机类型然后打开或关闭数字键? [打印本页]
作者: crist 时间: 2011-1-5 13:49 标题: 批处理如何判断计算机类型然后打开或关闭数字键?
意图如下:
1、判断计算机是台式机还是笔记本
2、根据1返回的结果修改注册表,如果是台式机则打开数字键,如果是笔记本则关闭数字键
请问批处理代码应该怎样写?
另外我写了一个代码但是无法正确达到目的,清帮忙指正。谢谢
- wmic path Win32_SystemEnclosure get ChassisTypes /value >ChssisTypes.log
- FOR /F "skip=2 delims==" %%I IN (ChssisTypes.log) DO (
- SET T=%%I
- IF "%T%"=="{3}" REG ADD "HKEY_USERS\.DEFAULT\Control Panel\Keyboard" /v "InitialKeyboardIndicators" /d "2" /f
- IF "%T%"=="{10}" REG ADD "HKEY_USERS\.DEFAULT\Control Panel\Keyboard" /v "InitialKeyboardIndicators" /d "0" /f
- )
复制代码
[ 本帖最后由 hanyeguxing 于 2011-1-5 14:56 编辑 ]
作者: hanyeguxing 时间: 2011-1-5 13:57
- @echo off&setlocal enableDelayedExpansion
- for /f "tokens=2 delims==" %%a in ('wmic path Win32_SystemEnclosure get ChassisTypes /value') do (
- set a=%%a
- set b=0
- if !a:~1^,-2!==10 set b=2
- REG ADD "HKU\.DEFAULT\Control Panel\Keyboard" /v InitialKeyboardIndicators /d !b! /f
- )
- pause
复制代码
[ 本帖最后由 hanyeguxing 于 2011-1-5 14:05 编辑 ]
作者: crist 时间: 2011-1-5 14:39 标题: 回复 2楼 的帖子
谢谢你的代码,我的电脑是台式机,但是我运行后发现注册表相关项的值是0而不是2。请问是怎么回事?
作者: hanyeguxing 时间: 2011-1-5 14:44
如果要求台机时设置为2,则:- @echo off&setlocal enableDelayedExpansion
- for /f "tokens=2 delims==" %%a in ('wmic path Win32_SystemEnclosure get ChassisTypes /value') do (
- set a=%%a
- set b=0
- if !a:~1^,-2!==3 set b=2
- REG ADD "HKU\.DEFAULT\Control Panel\Keyboard" /v InitialKeyboardIndicators /d !b! /f
- )
复制代码
作者: crist 时间: 2011-1-5 15:09 标题: 回复 4楼 的帖子
谢谢
再请问一下!a:~1^,-2!的意思是?
如果是在安装系统的过程中运行本代码,setlocal一行还有效吗?如果不能使用setlocal,那么代码应该如何修改?
[ 本帖最后由 crist 于 2011-1-5 15:10 编辑 ]
作者: hanyeguxing 时间: 2011-1-5 15:22
- @echo off
- for /f "tokens=2 delims==" %%a in ('wmic path Win32_SystemEnclosure get ChassisTypes /value') do set a=%%a
- set b=0
- if %a%=={3} set b=2
- REG ADD "HKU\.DEFAULT\Control Panel\Keyboard" /v InitialKeyboardIndicators /d %b% /f
复制代码
作者: crist 时间: 2011-1-5 19:46 标题: 回复 6楼 的帖子
谢谢,在进入系统之后运行能行,我再把这段代码放到xp安装版T12阶段运行看是否成功。
附带问一句,你知道网上那些ghostxp是怎样实现判断计算机类型然后自动开启或关闭数字键的吗?
作者: crist 时间: 2011-1-6 14:18 标题: 回复 6楼 的帖子
在虚拟机测试:
1.在未进入桌面的情况下此批处理的运行结果是:
"InitialKeyboardIndicators"="0x80000000"
2.在进入桌面后运行则能正确修改注册表。
"InitialKeyboardIndicators"="0"
备注:虚拟机的计算机类型返回数值是{1}
这可能是因为
path Win32_SystemEnclosure get ChassisTypes /value
必须要在桌面环境运行吧
不知有什么办法能在安装系统的过程中(例如T13或者T12阶段)判断计算机类型然后打开/关闭数字键?
听说可以通过vbs脚步来实现,但不知应该怎么写代码。
[ 本帖最后由 crist 于 2011-1-6 14:20 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |