命令行中执行reg /?,reg query /?即可知道reg的操作方式,此处做个记录,方便记忆
reg执行哪些操作
C:\Users\Administrator>reg /?
REG Operation [Parameter List]
Operation [ QUERY | ADD | DELETE | COPY |
SAVE | LOAD | UNLOAD | RESTORE |
COMPARE | EXPORT | IMPORT | FLAGS ]
主要用到查询所以看看怎么查询
C:\Users\Administrator>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_QWORD, REG_BINARY, REG_NONE
默认为所有类型。
/z 详细: 显示值名称类型的数字等值。
示例:
REG QUERY HKLM\Software\Microsoft\ResKit /v Version
显示注册表值版本的值
REG QUERY \\ABC\HKLM\Software\Microsoft\ResKit\Nt\Setup /s
显示远程机器 ABC 上的、在注册表项设置下的所有子项和值
REG QUERY HKLM\Software\Microsoft\ResKit\Nt\Setup /se #
用 "#" 作为分隔符,显示类型为 REG_MULTI_SZ 的所有值名称的所有
子项和值。
REG QUERY HKLM /f SYSTEM /t REG_SZ /c /e
以区分大小写的形式显示项、值和数据和数据类型 REG_SZ
的、在 HKLM 更目录下的、"SYSTEM" 出现的精确次数
REG QUERY HKCU /f 0F /d /t REG_BINARY
显示在 HKCU 根目录下、数据类型为 REG_BINARY 的数据的项、值和
数据的 "0F" 出现的次数。
REG QUERY HKLM\SOFTWARE /ve
显示在 HKLM\SOFTWARE 下的项、值和数据(默认)
实操:
项:注册表左边的一个个长得像文件夹的图标的东西就是项,项可以有子项,也可以有值,子项也是项,显示在注册表的左边
值:注册表右边的数据,值也分名称,类型和数据,类型对应二进制、字符串、多字符串、扩展字符串、32位值、64位值。编辑多字符串的时候可以换行,获取信息的时候发现每一行都是以\0结束,也就是多个字符串,扩展字符串是设置的时候%变量%会被解析,如:
C:\Users\Administrator>REG add HKLM\SOFTWARE\MICROSOFT\WISP /v "新值 #4" /t reg_expand_sz /d "%userprofile%\appdata"
操作成功完成。
C:\Users\Administrator>REG query HKLM\SOFTWARE\MICROSOFT\WISP /v "新值 #4"
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP
新值 #4 REG_EXPAND_SZ C:\Users\Administrator\appdata
%userprofile%在设置后再次读取被识别成真实的值了,程序中变量可以同过api:ExpandEnvironmentStrings解析,如果在注册表中手动编辑的时候写入%变量%,读取的时候是不会被解析的
获取具体的值
C:\Users\Administrator>REG QUERY HKLM\SOFTWARE\MICROSOFT\WISP /v "新值 #3"
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP
新值 #3 REG_MULTI_SZ HELLO WORLD\0GOOD\0WHAT THE FUCK
展示某项的所有值,不包括子项
C:\Users\Administrator>REG QUERY HKLM\SOFTWARE\MICROSOFT\WISP /v *
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP
新值 #1 REG_SZ
新值 #2 REG_SZ HELLO WORLD
新值 #3 REG_MULTI_SZ HELLO WORLD\0GOOD\0WHAT THE FUCK
新值 #4 REG_EXPAND_SZ %USERPROFILE%\APPDATA
新值 #5 REG_BINARY 766E5DE756456DFBDFFFDADFEAFAE3E3243562578356
搜索结束: 找到 5 匹配。
获取某项的一级子项和该项中的所有值
C:\Users\Administrator>REG QUERY HKLM\SOFTWARE\MICROSOFT\WISP
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP
新值 #1 REG_SZ
新值 #2 REG_SZ HELLO WORLD
新值 #3 REG_MULTI_SZ HELLO WORLD\0GOOD\0WHAT THE FUCK
新值 #4 REG_EXPAND_SZ %USERPROFILE%\APPDATA
新值 #5 REG_BINARY 766E5DE756456DFBDFFFDADFEAFAE3E3243562578356
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP\ExcludedDevices
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP\MultiTouch
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP\Pen
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP\Touch
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP\新项 #1
获取所有子项和所有值
C:\Users\Administrator>REG QUERY HKLM\SOFTWARE\MICROSOFT\WISP /s
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP
新值 #1 REG_SZ
新值 #2 REG_SZ HELLO WORLD
新值 #3 REG_MULTI_SZ HELLO WORLD\0GOOD\0WHAT THE FUCK
新值 #4 REG_EXPAND_SZ %USERPROFILE%\APPDATA
新值 #5 REG_BINARY 766E5DE756456DFBDFFFDADFEAFAE3E3243562578356
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP\ExcludedDevices
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP\MultiTouch
MultiTouchEnabled REG_DWORD 0x1
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP\Pen
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WISP\Pen\SysEventParameters
(默认) REG_SZ Microsoft Pen System Event Parameters
UIRightTapMode REG_DWORD 0x1
Move REG_DWORD 0x28
ShakeAngle.min REG_DWORD 0x5
Move.min REG_DWORD 0xa
FlickMode REG_DWORD 0x1
LagTime REG_DWORD 0x1e
WaitTime.max REG_DWORD 0x3e8
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
添加:
REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead
添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)
删除:
REG DELETE HKLM\Software\MyCo\MyApp\Timeout
删除注册表项 Timeout 及其所有子项和值
REG DELETE \\ZODIAC\HKLM\Software\MyCo /v MTU
删除 ZODIAC 上 MyCo 下的注册表项 MTU
如果Key中有百分号,并且两个百分号中夹杂着一个变量,如%SystemRoot%_system32_cmd.exe,需要添加^符号进行转译
C:\Users\Administrator>reg query hkcu\console\^%SystemRoot^%_system32_cmd.exe
HKEY_CURRENT_USER\console\%SystemRoot%_system32_cmd.exe
CodePage REG_DWORD 0x3a8
ScreenBufferSize REG_DWORD 0x3e80078
WindowSize REG_DWORD 0x730078
FaceName REG_SZ Terminal
FontSize REG_DWORD 0x10000c
FontFamily REG_DWORD 0x30
FontWeight REG_DWORD 0x190
其他用户的注册表:
假如现在有用户Administrator和用户test,当前登录用户是Administrator,注册表中的HKEY_USERS里面没有test对应的sid的注册表,要获取用户的sid,可以通过NetUserGetInfo获取
LPUSER_INFO_4 pUserInfo4 = NULL;
NET_API_STATUS n4Status = NetUserGetInfo(NULL, usri1_name, 4, (LPBYTE*)&pUserInfo4)
也可以通过NetUserEnum遍历用户,获取用户名,NetUserEnum不能直接获取level4的用户信息,
用户的注册表在c:\users\test\ntuser.dat,可以通过
reg load hku\test c:\users\test\ntuser.data
把test的user注册表挂载到注册表,也可以自行获取sid然后根据windows的用户注册表挂载名称的规则挂载。其中常用路径在
C:\Users\test1>reg query "hku\test\software\microsoft\windows\currentversion\explorer\user shell folders"
C:\Users\test1>reg query "hkcu\software\microsoft\windows\currentversion\explorer\user shell folders"
有一个相似的注册表路径
hkcu\software\microsoft\windows\currentversion\explorer\shell folders
通过检测,shell folders里面的appdata项改掉后echo %appdata%不会改变,修改user shell folders里面的appdata项才会改变