中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]如何用setacl在批处理中修改注册表的权限呢?
« [1] [2] »
作者:
标题: [原创]如何用setacl在批处理中修改注册表的权限呢? 取消高亮 | 上一主题 | 下一主题
gene771771
初级用户





积分 105
发帖 77
注册 2006-11-9
来自 重庆
状态 离线
『楼 主』:  [原创]如何用setacl在批处理中修改注册表的权限呢?

我用setacl2.0.2.0该注册表权限的时候遇到问题了。。。
我英文不好,作者写的语法我看不懂,麻烦帮我解释一下下吧。。。
比如我想要改
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL"
和“HKEY_CLASSES_ROOT\.exe”
这个两个键值为只读,该怎么写呢?
这是setacl的下载地址:
http://sourceforge.net/project/s ... mp;package_id=68032
谢谢。

这是我试着写的一个
@echo off
:again
set UpdatePolicy=GPUpdate /Force>nul 2>nul
echo 1
setacl -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" -ot reg -ace "n:everyone;p:read;m:grant;w:dacl" -op "dacl:p_c"
setacl -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" -ot reg -ace "n:everyone;p:read;m:aud_succ;w:sacl" -op "sacl:p_c"
%UpdatePolicy%>nul 2>nul
ENDLOCAL
pause
set UpdatePolicy=GPUpdate /Force>nul 2>nul
echo 2
setacl -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" -ot reg -ace "n:everyone;p:read;m:revoke;w:dacl" -op "dacl:p_nc"
setacl -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" -ot reg -ace "n:everyone;p:read;m:aud_fail;w:sacl" -op "sacl:p_nc"
%UpdatePolicy%>nul 2>nul
ENDLOCAL
pause
goto again

虽然操作成功,但是并没有修改其权限。

[ Last edited by gene771771 on 2006-12-1 at 01:37 PM ]

2006-11-17 09:19
查看资料  发送邮件  发短消息 网志  OICQ (280385115)  编辑帖子  回复  引用回复
ronin
中级用户




积分 421
发帖 111
注册 2003-8-29
状态 离线
『第 2 楼』:  

setacl machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /registry /grant everyone /read
参考下

2006-11-30 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gene771771
初级用户





积分 105
发帖 77
注册 2006-11-9
来自 重庆
状态 离线
『第 3 楼』:  呵呵

非常谢谢你,但是你说的是0.9.80,我用的是setacl2.0.2.0,语法修改很多了,在专研了一天英文后我自己作出来了。

2006-11-30 11:19
查看资料  发送邮件  发短消息 网志  OICQ (280385115)  编辑帖子  回复  引用回复
ronin
中级用户




积分 421
发帖 111
注册 2003-8-29
状态 离线
『第 4 楼』:  

能不能讲你的代码提供下,这几天为这个头疼的很

2006-12-1 03:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gene771771
初级用户





积分 105
发帖 77
注册 2006-11-9
来自 重庆
状态 离线
『第 5 楼』:  我把源码发上来

我把源码发上来,测试环境 windows xp sp2





@echo off
color 17
mode con: cols=80 lines=40
:Selection
set UpdatePolicy=GPUpdate /Force>nul 2>nul
echo.
echo *******************************************************************************
echo           *                                                    *
echo        *                晗      晗      制      造               *
echo           *                                                    *
echo *******************************************************************************
echo.
echo                             声明:病毒免疫工具
Echo.
Echo        木马和病毒是通过注册表的自启动项,文件关联,系统服务实现自启动的。
echo    本程序将:
echo.
echo    设置  注册表隐藏文件键值为只读。
echo    设置  注册表自启动项为只读。
echo    设置  注册表重要文件关联为只读。
echo    设置  注册表所有服务为只读。
echo.            
echo.
echo                              请选择需要执行的操作
echo.
echo                         [1]  安装
echo                         [2]  卸载 (恢复系统默认)
echo                         [3]  退出
echo.
echo                         提示:请务必确定你的计算机无毒。
echo.
set /p name=                        请输入[1,2,3]
if not errorlevel 1 goto goon
cls
goto Selection
:goon
if /i %name%==1 echo.&echo 你选择了 安装&goto install
if /i %name%==2 echo.&echo 你选择了 卸载 (恢复系统默认)&goto uninstall
if /i %name%==3 echo.&echo 你选择了 退出&goto quit
cls
goto Selection


:install
echo.
set OP=-ot reg -actn ace -ace "n:everyone;p:read;m:grant;w:dacl" -actn setprot -op "dacl:p_nc"
set choice=安装
echo Y|cacls "%USERPROFILE%\「开始」菜单\程序\启动" /C /P everyone:r>nul 2>nul
echo Y|cacls "%ALLUSERSPROFILE%\「开始」菜单\程序\启动" /C /P everyone:r>nul 2>nul
goto Doit
:uninstall
echo.
set OP=-ot reg -actn ace -ace "n:everyone;p:read;m:revoke;w:dacl" -actn setprot -op "dacl:np"
set choice=卸载
echo Y|cacls "%USERPROFILE%\「开始」菜单\程序\启动" /C /P everyone:f>nul 2>nul
echo Y|cacls "%ALLUSERSPROFILE%\「开始」菜单\程序\启动" /C /P everyone:f>nul 2>nul
goto Doit



:Doit
echo 修复注册表键值......
rem 修复文件关联
ftype exefile="%%1" %%*>nul 2>nul
assoc .exe=exefile>nul 2>nul
ftype comfile="%%1" %%*>nul 2>nul
assoc .com=comfile>nul 2>nul
ftype scrfile="%%1" %/S>nul 2>nul
assoc .scr=scrfile>nul 2>nul
ftype txtfile=%%SystemRoot%%\system32\NOTEPAD.EXE %%1>nul 2>nul
assoc .txt=txtfile>nul 2>nul
ftype chm.file="c:\windows\hh.exe" %%1>nul 2>nul
assoc .chm=chm.file>nul 2>nul
ftype batfile="%%1" %%*>nul 2>nul
assoc .bat=batfile>nul 2>nul
ftype cmdfile="%%1" %%*>nul 2>nul
assoc .cmd=cmdfile>nul 2>nul
ftype hlpfile=%%SystemRoot%%\system32\winhlp32.exe %%1>nul 2>nul
assoc .hlp=hlpfile>nul 2>nul
ftype inffile=%%SystemRoot%%\System32\NOTEPAD.EXE %%1>nul 2>nul
assoc .inf=inffile>nul 2>nul
ftype inifile=%%SystemRoot%%\System32\NOTEPAD.EXE %%1>nul 2>nul
assoc .ini=inifile>nul 2>nul
ftype piffile="%%1" %%*>nul 2>nul
assoc .pif=piffile>nul 2>nul
ftype regedit=regedit.exe %%1>nul 2>nul
ftype regfile=regedit.exe "%%1">nul 2>nul
assoc .reg=regfile>nul 2>nul
rem 修复隐藏文件
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" /v CheckedValue /t reg_dword /d 1 /f>nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" /v DefaultValue /t reg_dword /d 2 /f>nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden" /v UncheckedValue /t reg_sz /d 1 /f>nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden" /v CheckedValue /t reg_dword /d 0 /f>nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden" /v DefaultValue /t reg_dword /d 0 /f>nul 2>nul
rem 修复AppInit_DLLs
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t reg_sz /f>nul 2>nul
echo 操作成功结束



echo.
echo %choice%病毒免疫工具......
rem HKLM
setacl -on "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" %OP%>nul 2>nul
setacl -on "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" %OP%>nul 2>nul
setacl -on "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices" %OP%>nul 2>nul
setacl -on "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\RunEX" %OP%>nul 2>nul
setacl -on "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEX" %OP%>nul 2>nul
setacl -on "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesEx" %OP%>nul 2>nul

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" /v CheckedValue /t reg_dword /d 1 /f>nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" /v DefaultValue /t reg_dword /d 2 /f>nul 2>nul

setacl -on "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL" %OP%>nul 2>nul

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden" /v UncheckedValue /t reg_sz /d 1 /f>nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden" /v CheckedValue /t reg_dword /d 0 /f>nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden" /v DefaultValue /t reg_dword /d 0 /f>nul 2>nul

setacl -on "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden" %OP%>nul 2>nul

rem HKCU
setacl -on "hkcu\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" %OP%>nul 2>nul
setacl -on "hkcu\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" %OP%>nul 2>nul
setacl -on "hkcu\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices" %OP%>nul 2>nul
setacl -on "hkcu\SOFTWARE\Microsoft\Windows\CurrentVersion\RunEX" %OP%>nul 2>nul
setacl -on "hkcu\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEX" %OP%>nul 2>nul
setacl -on "hkcu\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesEx" %OP%>nul 2>nul
setacl -on "hkcu\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce" %OP%>nul 2>nul

rem HKCR
setacl -on "hkcr\.exe" %OP%>nul 2>nul
setacl -on "hkcr\.com" %OP%>nul 2>nul
setacl -on "hkcr\.scr" %OP%>nul 2>nul
setacl -on "hkcr\.txt" %OP%>nul 2>nul
setacl -on "hkcr\.chm" %OP%>nul 2>nul
setacl -on "hkcr\.bat" %OP%>nul 2>nul
setacl -on "hkcr\.cmd" %OP%>nul 2>nul
setacl -on "hkcr\.hlp" %OP%>nul 2>nul
setacl -on "hkcr\.inf" %OP%>nul 2>nul
setacl -on "hkcr\.ini" %OP%>nul 2>nul
setacl -on "hkcr\.pif" %OP%>nul 2>nul
setacl -on "hkcr\.reg" %OP%>nul 2>nul
setacl -on "hkcr\exefile\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\inifile\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\txtfile\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\comfile\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\batfile\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\inffile\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\scrfile\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\chm.file\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\cmdfile\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\hlpfile\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\piffile\shell\open\command" %OP%>nul 2>nul
setacl -on "hkcr\regfile\shell\open\command" %OP%>nul 2>nul

rem AppInit_DLLs
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t reg_sz /f>nul 2>nul

setacl -on "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" %OP%>nul 2>nul

echo 操作成功结束



echo.
echo 正在更新帐户策略、审核策略......
REM 刷新本地安全策略
%UpdatePolicy%>nul 2>nul
echo 操作成功结束
echo.
echo.
echo 所有操作成功完成!



:quit
ENDLOCAL
echo.
echo.
title "(*^@^*)"晗晗的QQ:305158720
echo                           $$$ 晗晗制造,版本1.0 $$$
pause>nul 2>nul

[ Last edited by gene771771 on 2007-1-17 at 11:55 PM ]

2006-12-1 04:42
查看资料  发送邮件  发短消息 网志  OICQ (280385115)  编辑帖子  回复  引用回复
ronin
中级用户




积分 421
发帖 111
注册 2003-8-29
状态 离线
『第 6 楼』:  

看了你这个代码,和我的要求不一样,我打算用用批处理来限制用户对一些文件不能删除,我用0.9版本,都是只能控制这个文件只读不能修改,但没办法不能删除,gene771771有没有这方面的经验,可以控制文件夹属性只读,就是里面全部文件不能删除,但这个要求是在system32里面的一个文件要保护

2006-12-3 23:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 7 楼』:  

我好用的0.87,汗~下个新的回去看看

2006-12-4 01:54
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
gene771771
初级用户





积分 105
发帖 77
注册 2006-11-9
来自 重庆
状态 离线
『第 8 楼』:  TO ronin

我研究了setacl对dacl列表的修改,它还有防止文件删除的功能,其实原理和CACLS命令是一个原理,但是好像没有防止注册表键值不能删除的功能吧。。。

2006-12-7 02:03
查看资料  发送邮件  发短消息 网志  OICQ (280385115)  编辑帖子  回复  引用回复
0401
中级用户

带走



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

记得深山红叶也有用SETACL来修改IE的某些注册表项的权限的,SETACL命令行好复杂,没去研究过。

2006-12-7 05:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tathatayx
初级用户





积分 23
发帖 11
注册 2006-11-7
来自 四川成都
状态 离线
『第 10 楼』:  

高手论道,我辈茫然!

但提高大啊!

2006-12-7 08:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ronin
中级用户




积分 421
发帖 111
注册 2003-8-29
状态 离线
『第 11 楼』:  

深山红叶使用SETACL0.98版本,基本上实现功能和gene771771一样,2.0的复杂很多

2006-12-7 22:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ronin
中级用户




积分 421
发帖 111
注册 2003-8-29
状态 离线
『第 12 楼』:  

setacl和cacls设置了文件任意人只读,但只是不能修改,可以替换和删除

2006-12-12 23:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
gene771771
初级用户





积分 105
发帖 77
注册 2006-11-9
来自 重庆
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by ronin at 2006-12-12 10:26:
setacl和cacls设置了文件任意人只读,但只是不能修改,可以替换和删除

用CACLS可以实现,可以不用它。它语法比较难操作。

2006-12-13 02:32
查看资料  发送邮件  发短消息 网志  OICQ (280385115)  编辑帖子  回复  引用回复
rubik
初级用户





积分 102
发帖 35
注册 2006-3-16
状态 离线
『第 14 楼』:  呵呵

注册表的权限很好改的,哪有这么麻烦,一条命令就够了。

看来是不是我也可以来写个“软件”了

2007-1-6 01:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
godkuku
新手上路





积分 4
发帖 2
注册 2007-11-20
状态 离线
『第 15 楼』:  

同样遇到这个问题了呢....
setacl.exe -on "c:\1.txt" -ot "file" -ace "n:admins;p:read;m:deny;w:dacl"
例如此行,不管c:\下是否存在1.txt都会显示SetACL finished successfully,操作成功。我也是啃了两天的英文。快脑残掉啦都

2007-11-20 15:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: