标题: [注册表类] 批处理配合regini如何在默认[17]时修改项权限? [打印本页]
作者: rivch 时间: 2010-4-23 21:09 标题: 批处理配合regini如何在默认[17]时修改项权限?
目的是要用regini 来修改导出的注册表项的权限!
笼统的说是导出一个注册表项下的所有子项!且我只取其项名称!
详细:
1.能导出指定的注册表项,的名称,比如 [HKEY_LOCAL_MACHINE\SYSTEM]
2.我只需要导出注册表某一项即其子项下的,项名称“包括父项”。而其他的不要。键值什么的不需要!即过滤掉其他内容
3.也想过先导出所有然后过滤掉键值!但是水平有限,
(因没看到本论坛有相关帖子。所以浪费了大家时间深表歉意!如有人知道。请告诉方法或链接地址等。
还请版主解封此贴,或者干脆和谐掉此贴!让大家看到此贴被锁身为LZ真的很丢人!)
本人已经试过reg export命令,和regedit /e 命令。均达不到理想要求!还有通过百度,狗狗,谷歌搜索均达不到理想要求!
经7楼代码问题已经解决!
但是有产生了新的问题。在此补充说明。。。
由于要用regini 编辑ini文件批量修改权限。。
但是
1.此时如果要修改的注册表项权限为[17],即管理员无发对其访问!此时应该怎么对该项实行reg query,reg export
2.此时涉及到批量修改系继承权限!(貌似个人感觉)
3.如我此时要修改的是"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies"而他的默认权限是[17]
4.用regini命令已经满足不了需求,即使我们用regini修改其权限但因为他的子项权限依然是[17]此时我们用reg export仅能导出
"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies"而其子项依然是[17]无法导出更不用说
reg query它了0,0(本人已经测试)!
5.那此时我们该怎么办 windows xp中是否有其他内部命令修改继承权限?
[ 本帖最后由 rivch 于 2010-4-23 23:35 编辑 ]
作者: rivch 时间: 2010-4-23 21:10
在线等达人的到来。。。。。。
作者: GNU 时间: 2010-4-23 21:58
能否举个例子说说reg export出来的东西你想保留哪些内容?
作者: rivch 时间: 2010-4-23 22:09
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"NoDesktopCleanupWizard"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\NonEnum]
"{BDEADF00-C265-11D0-BCED-00A0C90AB50F}"=dword:00000001
"{6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}"=dword:40000021
"{0DF44EAA-FF21-4412-828E-260A8728E7F1}"=dword:00000020
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Ratings]
"Hint"="k"
"FileName0"="C:\\WINDOWS\\system32\\RSACi.rat*"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Ratings\.Default]
"Allow_Unknowns"=dword:00000000
"PleaseMom"=dword:00000001
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system]
"dontdisplaylastusername"=dword:00000000
"legalnoticecaption"=""
"legalnoticetext"=""
"shutdownwithoutlogon"=dword:00000001
"undockwithoutlogon"=dword:00000001
"LogonType"=dword:00000000
以上是
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies项下所有导出结果!
我希望能保留
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\NonEnum]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Ratings]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Ratings\.Default]
。。。。。。
我的理解是这些是项名称。。。专业语言还请指教。
也就是能生产一个完全符合regini 语法的ini,我只需找方法在每个项名称后加权限代码即可。
当然是用批处理加- -。例子:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies] [17 1]
。。。。。。。。。
如以上格式!
作者: hanyeguxing 时间: 2010-4-23 22:18
以使用reg query查询为例,对其值可以:
1,使用for /f 解析,并判断第一个字符来判断输出
2,直接使用findstr判断行首字符
[ 本帖最后由 hanyeguxing 于 2010-4-23 22:37 编辑 ]
作者: rivch 时间: 2010-4-23 22:25 标题: 回复 5楼 的帖子
不知5楼达人,可否给出具体参考代码。供大家观摩?
1.可随达人心情给出具体代码。
2.也可给出大概代码。即说明语句。
作者: hanyeguxing 时间: 2010-4-23 22:36
例如- reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies" /s |findstr /i "^HK"
复制代码
根据需要,还可以使用for /f对这个结果再处理,例如:- for /F "delims=" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies" /s^|findstr /i "^H"') do >>123.ini echo.[%%a] [171]
复制代码
[ 本帖最后由 hanyeguxing 于 2010-4-23 22:44 编辑 ]
作者: rivch 时间: 2010-4-23 22:41 标题: 回复 7楼 的帖子
代码还有少许不解- -
因论坛禁止版聊,
所以还请5楼达人,留下联系方式。
或者屈尊加下本人QQ517167906
作者: rivch 时间: 2010-4-23 23:08 标题: 回复 7楼 的帖子
感谢您的帮助此问题已解决!
最终试验代码
for /F "delims=" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies" /s^|findstr /i "^H"') do >>123.ini echo.[%%a] [17 1]
获得成功!大体已经解决。其他有待研究!!
谢谢了咪那!
经7楼代码问题已经解决!
但是有产生了新的问题。在此补充说明。。。
由于要用regini 编辑ini文件批量修改权限。。
但是
1.此时如果要修改的注册表项权限为[17],即管理员无发对其访问!此时应该怎么对该项实行reg query,reg export
2.此时涉及到批量修改系继承权限!(貌似个人感觉)
3.如我此时要修改的是"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies"而他的默认权限是[17]
4.用regini命令已经满足不了需求,即使我们用regini修改其权限但因为他的子项权限依然是[17]此时我们用reg export仅能导出
"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies"而其子项依然是[17]无法导出更不用说
reg query它了0,0(本人已经测试)!
5.那此时我们该怎么办 windows xp中是否有其他内部命令修改继承权限?
[ 本帖最后由 rivch 于 2010-4-23 23:35 编辑 ]
作者: GNU 时间: 2010-4-23 23:11 标题: 回复 8楼 的帖子
提技术问题==版聊?哪条版规说的?我也去学习一下。
作者: GNU 时间: 2010-4-23 23:16
- @echo off
- reg export HKEY_CURRENT_USER\Environment %temp%\RegExp.reg
- type %temp%\RegExp.reg | findstr "^\["
复制代码
作者: rivch 时间: 2010-4-23 23:46
有没人能透露下修改权限的所有命令?
1.regini
2.cacls
还有??
[ 本帖最后由 rivch 于 2010-4-24 00:18 编辑 ]
作者: rivch 时间: 2010-4-24 00:01 标题: 回复 11楼 的帖子
运行后所得:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Environment]
"TEMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
00,45,00,25,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,20,00,53,00,65,00,74,00,\
74,00,69,00,6e,00,67,00,73,00,5c,00,54,00,65,00,6d,00,70,00,00,00
"TMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,\
45,00,25,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,20,00,53,00,65,00,74,00,74,\
00,69,00,6e,00,67,00,73,00,5c,00,54,00,65,00,6d,00,70,00,00,00
无解
作者: GNU 时间: 2010-4-24 00:09 标题: 回复 12楼 的帖子
批处理命令findstr正则表达式的基本用法
http://bbs.bathome.net/thread-24-1-1.html
作者: GNU 时间: 2010-4-24 00:10 标题: 回复 13楼 的帖子
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Test>type test.bat
@echo off
reg export HKEY_CURRENT_USER\Environment %temp%\RegExp.reg
type %temp%\RegExp.reg | findstr "^\[" >result.ini
C:\Test>test.bat
操作成功结束
C:\Test>type result.ini
[HKEY_CURRENT_USER\Environment]
|
作者: rivch 时间: 2010-4-24 00:29 标题: 回复 15楼 的帖子
所噶!
不得不佩服你!
太深度了(⊙_⊙)?琢磨中
[ 本帖最后由 rivch 于 2010-4-25 01:13 编辑 ]
作者: rivch 时间: 2010-4-25 01:11
@echo off
reg export HKEY_CURRENT_USER\Environment %temp%\RegExp.reg
type %temp%\RegExp.reg | findstr "^\["
以上findstr "^\["不解。。。
"^"次符号在此处的作用不理解0 0
个人理解是分析首行是"\"的字符将被保存。怎么也想不到后面的"["关他什么事- -,而且。输出形式要保留的是"["开头的字符串,怎么会凭空冒出个"\"??
但是不加"\"只是"^["无法输出正确结果!
感觉此"^"甚难理解。。。for中有特殊用法莫非此处也有?
还求解释!!
[ 本帖最后由 rivch 于 2010-4-25 01:13 编辑 ]
作者: sgaizxt001 时间: 2010-4-25 02:31
findstr的表达法: \<xyz 字位置: 字的开始
我认为是首先“^”将“\”转义,然后“\”才能表示为以“[”为行首去查找。不过我不知道为什么这里要转义了
[ 本帖最后由 sgaizxt001 于 2010-4-25 02:37 编辑 ]
作者: rivch 时间: 2010-4-26 21:22 标题: 回复 18楼 的帖子
如果可以的话,可否给出相关帖子的链接!
或者详细解释下为什么这里要转义!
很迷惑啊,这里不是for语句怎么会这样呢!!!
作者: hanyeguxing 时间: 2010-4-26 21:27
在findstr的中,[]用来定义集合的,要想使[和]成为普通字符,需要\在findstr内转义。^是用来定义行首的。
下表列出 findstr 接受的元字符。
字符 值
. 通配符:任何字符
* 重复:以前字符或类的零次或多次出现
^ 行位置:行的开始
$ 行位置:行的结尾
[class] 字符类:集合中任何一个字符
[^class] 反类:不在集合中的任何一个字符
[x-y 范围:范围:指定范围内的任何字符
\x 取消:元字符 x 的文字用途
\<xyz 字位置:字首
xyz> 字位置:字尾
作者: sgaizxt001 时间: 2010-4-26 21:32
那你搜索findstr
http://www.bathome.net/viewthrea ... p;highlight=findstr
我也不是很理解这里的写法,应该是我把他的代码理解错了
作者: rivch 时间: 2010-4-26 22:05 标题: 回复 20楼 的帖子
在findstr的中,[]用来定义集合的,要想使[和]成为普通字符,需要\在findstr内转义。^是用来定义行首的。
1.假如这里"^"此符号是转义,那为什么不写成findstr "\^["??
2.如果这里是定义首行的,那么 findstr "^\[" >>result.ini此句是否可以理解为,寻找
首行为"\["开头的行,或字符串?
3.是否可以这样理解。当使用 findstr "\<xyz"或者findstr"xyz>\"时。我们要说明的字符为"[和]"时。要对"\"进行转义?
还是在这个时候,不仅要对"[和]",其他比如:"<" ">" "&" "|" 等一系列特殊符号使用findstr "\<xyz"或者findstr"xyz>\"时也要对"\"进行转义?
求解释 ~~~~(>_<)~~~~
本人资质愚钝,还请见谅?
[ 本帖最后由 rivch 于 2010-4-26 22:30 编辑 ]
作者: sgaizxt001 时间: 2010-4-26 22:11
提示: 该帖被管理员或版主屏蔽
作者: rivch 时间: 2010-4-26 22:24 标题: 回复 23楼 的帖子
提示: 该帖被管理员或版主屏蔽
作者: rivch 时间: 2010-5-6 16:21
版主能把23L 24L删除吗?
谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |