中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: [原创]注册表快速定位 上一主题 | 下一主题
SpikeKnox
初级用户




积分 116
发帖 28
注册 2007-1-3
状态 离线
『楼 主』:  [原创]注册表快速定位

用过 sysinternals 的 regjump 就用BAT来写了一把, 但缺点是不能定位到具体的值。 新手作品,请大家多多指正! 谢谢!
@Echo OFF
:: 
:: BatName: OpenReg.bat
:: Version: 0.1
:: Purpose: 注册表快速定位
::
:: Usage: OpenReg [path]
:: example:  OpenReg HKLM\Software\Microsoft\Windows
::
:: Code by SpikeKnox 2007.01.31
:: 

rem Show help
If [%1]==[/?] (Type "%~f0" | findstr "^::" && Goto :EOF)

:OpenReg
SetLocal EnableDelayedExpansion
rem %1 要定位的路径(可选,为空时将regedit定位到根目录)
If NOT [%1]==[] (

	Set tag=我的电脑\%1
	Set "tag=!tag:"=!"
	
	rem 缩写路径转换
	Set "tag=!tag:HKCR\=HKEY_CLASSES_ROOT\!"
	Set "tag=!tag:HKCU\=HKEY_CURRENT_USER\!"
	Set "tag=!tag:HKLM\=HKEY_LOCAL_MACHINE\!"
	Set "tag=!tag:HKU\=HKEY_USERS\!"
	Set "tag=!tag:HKCC\=HKEY_CURRENT_CONFIG\!"
	
	Set tag="!tag!"
	
) Else (

	Set "tag=我的电脑"

)

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit /v LastKey /d %tag% /f >NUL
Start regedit

SetLocal DisableDelayedExpansion
Goto :EOF
[ Last edited by SpikeKnox on 2007-1-31 at 05:57 PM ]


   此帖被 +21 点积分       点击查看详情   
评分人:【 0401 分数: +2  时间:2007-2-1 18:16
评分人:【 electronixtar 分数: +11  时间:2007-3-18 03:36
评分人:【 everest79 分数: +8  时间:2007-3-24 15:27


2007-2-1 06:55
查看资料  发短消息  网志   编辑帖子  回复  引用回复
SpikeKnox
初级用户




积分 116
发帖 28
注册 2007-1-3
状态 离线
『第 2 楼』:  [原创]自己继一个,查找winrar的安装目录

QuerySoftRegKey winrar "C%%Program Files%WinRAR"
@Echo OFF
:: 
:: BatName: QuerySoftRegKey.bat
:: Version: 0.1
:: Purpose: 查询软件在注册表各Software项中的位置
::
:: Usage: QuerySoftRegKey softName [key]
::
::        softName	要查询的软件名
::        key		要查询的值名(可选)
::
:: example: QuerySoftRegKey winrar
::          QuerySoftRegKey winrar "C%%Program Files%WinRAR"
::
::
:: Code by SpikeKnox 2007.01.31
:: 

rem Show help
If [%1]==[/?] Call :Help && Goto :EOF

SetLocal ENABLEDELAYEDEXPANSION

If [%1]==[] Call :Help && Goto :EOF
Set softName=%1
Set "softName=!softName:"=%!
Set softName="!softName!"

If NOT [%2]==[] (
	Set "key=%2"
	Set "key=!key:"=%!
	Set key="!key!"
)

For /f "delims=☆" %%i IN ('^(reg query HKCU\Software /k /f %softName% ^&^& reg query HKLM\Software /k /f %softName%^) ^| find "HKEY_"') DO (
	If [!key!]==[] (
		rem 只查询软件名
		Echo %%i
		Call :OpenReg "%%i"
	) Else (
		rem 只查询软件名和具体的值名
		Set item="%%i"
		for /f "delims=☆" %%I IN ('reg query !item! /s /f !key! ^| find "HKEY_"') DO Call :OpenReg "%%I"
		reg query !item! /s /f !key! | find !key!
	)
)

Goto :EOF

:OpenReg
rem %1 要定位的路径(可选,为空时将regedit定位到根目录)
If NOT [%1]==[] (

        Set tag=我的电脑\%1
        Set "tag=!tag:"=!"
        
        rem 缩写路径转换
        Set "tag=!tag:HKCR\=HKEY_CLASSES_ROOT\!"
        Set "tag=!tag:HKCU\=HKEY_CURRENT_USER\!"
        Set "tag=!tag:HKLM\=HKEY_LOCAL_MACHINE\!"
        Set "tag=!tag:HKU\=HKEY_USERS\!"
        Set "tag=!tag:HKCC\=HKEY_CURRENT_CONFIG\!"
        
        Set tag="!tag!"
        
) Else (

        Set "tag=我的电脑"

)

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit /v LastKey /d %tag% /f >NUL
Start regedit

Goto :EOF

:Help
Type "%~f0" | findstr "^::"
Goto :EOF


   此帖被 +20 点积分      点击查看详情   
评分人:【 redtek 分数: +10  时间:2007-2-1 21:15
评分人:【 HUNRYBECKY 分数: +2  时间:2007-2-1 22:55
评分人:【 electronixtar 分数: +8  时间:2007-3-18 03:37


2007-2-1 12:13
查看资料  发短消息  网志   编辑帖子  回复  引用回复
0401
中级用户

带走



积分 435
发帖 88
注册 2005-9-24
状态 离线
『第 3 楼』:  

写得很漂亮啊,为 LastKey 加2分。


2007-2-1 18:18
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 4 楼』:  

我也支持,加2分。不错。


2007-2-1 22:55
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 5 楼』:  

不过用起来有点问题,显示错误:命令行参数太多,希望修正。


2007-2-1 23:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
SpikeKnox
初级用户




积分 116
发帖 28
注册 2007-1-3
状态 离线
『第 6 楼』:  可能是我们的 reg.exe 的版本不同

Originally posted by HUNRYBECKY at 2007-2-1 10:00 AM: 不过用起来有点问题,显示错误:命令行参数太多,希望修正。
我用的是Win2003。 reg query 支持这些参数,老版本的没有那么多的。 REG QUERY KeyName [/v [ValueName] | /ve] [/s] [/f Data [/k] [/d] [/c] [/e]] [/t Type] [/z] [/se Separator] KeyName [\\Machine\]FullKey Machine - 远程机器名称,省略当前机器的默认值。在远程机器上 只有 HKLM 和 HKU 可用。 FullKey - 以 ROOTKEY\SubKey 名称形式 ROOTKEY - [ HKLM | HKCU | HKCR | HKU | HKCC ] SubKey - 在选择的 ROOTKEY 下的注册表项的全名 /v 具体的注册表项值的查询。 如果省略,会查询该项的所有值。 只有与 /f 开关一起指定的情况下,此开关的参数才是可选的。它指定 只在值名称中搜索。 /ve 查询默认值或空值名称(默认)。 /s 循环查询所有子项和值(如 dir /s)。 /se 为 REG_MULTI_SZ 在数据字符串中指定分隔符(长度只为 1 个字符)。 默认分隔符为 "\0"。 /f 指定搜索的数据或模式。 如果字符串包含空格,请使用双引号。默认为 "*"。 /k 指定只在项名称中搜索。 /d 指定只在数据中搜索。 /c 指定搜索时区分大小写。 默认搜索为不区分大小写。 /e 指定只返回完全匹配。 默认是返回所有匹配。 /t 指定注册表值数据类型。 有效的值是: REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ, REG_DWORD, REG_BINARY, REG_NONE 默认为所有类型。 /z 详细: 显示值名称类型的数字等值。


2007-2-2 01:25
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 7 楼』:  

Originally posted by SpikeKnox at 2007-2-2 01:25: 我用的是Win2003。 reg query 支持这些参数,老版本的没有那么多的。:( REG QUERY KeyName [/v [ValueName] | /ve] [/s] [/f Data [/k] [/d] [/c] [/e]] [/t Type] ...
的确不一样,我的是XPSP2的,好多参数都没有.


2007-3-18 02:45
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 8 楼』:  

LASTKEY老早就用了,有优点……但是只能是打开regedit的第一次。 N久以前写的: ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '功能:快捷到达注册表指定路径。 ' '作者:轩轩G.G. ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim OperationRegistry Set OperationRegistry=WScript.Createobject("WScript.Shell") RegPath="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Favorites" Favorites_GoName="&S我要到→" Type_Name="REG_SZ" Key_Data=Inputbox("本脚本由" & vbcrlf & "ID:SLore" & vbcrlf & "昵称:轩 制作" & vbcrlf & "转发或转帖请注明 本信息!" & vbcrlf & vbcrlf & "请输入你要去的路径:","路径",RegPath) If Key_Data=False Then WScript.Quit OperationRegistry.RegWrite RegPath & "\" & Favorites_GoName,"我的电脑\" & Key_Data,Type_Name OperationRegistry.Run("Regedit") WScript.Sleep 1000 '延时1s (如果计算机速度较慢请将此值设置大些) OperationRegistry.SendKeys "%a+s" WScript.Quit


   此帖被 +4 点积分        点击查看详情   
评分人:【 baomaboy 分数: +4  时间:2007-3-24 14:50


2007-3-18 03:29
查看资料  发短消息  网志   编辑帖子  回复  引用回复
81291895
初级用户





积分 42
发帖 17
注册 2005-8-28
状态 离线
『第 9 楼』:  

学习了 呵呵^^


2007-3-18 03:34
查看资料  发短消息  网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 10 楼』:  

厉害,顶!




C:\>BLOG initiative.yo2.cn/ C:\>hh.exe ntcmds.chm::/ntcmds.htm C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-3-18 03:35
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 11 楼』:  

发现WIN2003的REG命令很好用,修正了前段时间所说的REG QUERY命令会莫名其妙的"吃掉"中文字符的尾部的问题. 2003的这个命令,经过我测试,发现已经完全解决了这个问题,而且可以移值到WINXP中使用.现在查询不再有问题了,帖出两个版本的比较结果: 源值TMP="D:\USERDATA\TEMP t\我爱大苏打佛似的发十分\什么东西我都不爱得到 打开发地方\哈了" WINXPSP2查询结果:
! REG.EXE VERSION 3.0

HKEY_CURRENT_USER\Environment
    TMP	REG_SZ	D:\USERDATA\TEMP  t\我爱大苏打佛似的发十分\什么东西
WIN2003 查结果:
HKEY_CURRENT_USER\Environment
    TMP    REG_SZ    D:\USERDATA\TEMP  t\我爱大苏打佛似的发十分\什么东西我都不爱得到 打开发地方\哈了
不知道大家发现没有:2003的查询结果少了两行数据了,而且不在出现 REG.EXE VERSION 3.0,我看REG的版本,已经是5的了. 原贴讨论: http://www.cn-dos.net/forum/viewthread.php?tid=22202&pid=182591&page=1&sid=Bi8yqD#pid182591 http://www.cn-dos.net/forum/viewthread.php?tid=22800&fpage=1&highlight=REG%2BQUERY http://www.cn-dos.net/forum/viewthread.php?tid=21365&fpage=1&highlight=%E6%B3%A8%E5%86%8C%E8%A1%A8%2B%E4%B8%AD%E6%96%87 [ Last edited by HUNRYBECKY on 2007-3-18 at 04:29 AM ]


2007-3-18 04:23
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 12 楼』:  

精华帖啊,版主来加精!!!!




C:\>BLOG initiative.yo2.cn/ C:\>hh.exe ntcmds.chm::/ntcmds.htm C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-3-24 13:04
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 13 楼』:  

不错,顶一个了。 HUNRYBECKY 兄可否将2003的reg命令上传一个到论坛上面来,很多人都是xp的。


2007-3-24 19:59
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
eech
高级用户




积分 906
发帖 346
注册 2006-7-10
状态 离线
『第 14 楼』:  

比如我要查这个。怎么写呢?HKEY_LOCAL_MACHINE\SOFTWARE\KasperskyLab


2007-3-25 01:43
查看资料  发短消息  网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 15 楼』:  

Set "tag=!tag:"=!" 怎么是3个"???? 好象等价于 set "tag=!tag!" ?! F:\>QuerySoftRegKey winrar 错误: 命令行参数太多 [ Last edited by xycoordinate on 2007-3-24 at 01:00 PM ]


2007-3-25 01:57
查看资料  发送邮件  发短消息  网志  OICQ (226308607)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: