Board logo

标题: [原创]如何用setacl在批处理中修改注册表的权限呢? [打印本页]

作者: gene771771     时间: 2006-11-17 09:19    标题: [原创]如何用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/showfiles.php?group_id=69165&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 ]

作者: ronin     时间: 2006-11-30 10:52
setacl machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /registry /grant everyone /read
参考下

作者: gene771771     时间: 2006-11-30 11:19    标题: 呵呵
非常谢谢你,但是你说的是0.9.80,我用的是setacl2.0.2.0,语法修改很多了,在专研了一天英文后我自己作出来了。

作者: ronin     时间: 2006-12-1 03:58
能不能讲你的代码提供下,这几天为这个头疼的很

作者: gene771771     时间: 2006-12-1 04:42    标题: 我把源码发上来
我把源码发上来,测试环境 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 安装
echo 卸载 (恢复系统默认)
echo 退出
echo.
echo 提示:请务必确定你的计算机无毒。
echo.
set /p name= 请输入
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 ]

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

作者: vkill     时间: 2006-12-4 01:54
我好用的0.87,汗~下个新的回去看看

作者: gene771771     时间: 2006-12-7 02:03    标题: TO ronin
我研究了setacl对dacl列表的修改,它还有防止文件删除的功能,其实原理和CACLS命令是一个原理,但是好像没有防止注册表键值不能删除的功能吧。。。

作者: 0401     时间: 2006-12-7 05:55
记得深山红叶也有用SETACL来修改IE的某些注册表项的权限的,SETACL命令行好复杂,没去研究过。

作者: tathatayx     时间: 2006-12-7 08:32
高手论道,我辈茫然!

但提高大啊!

作者: ronin     时间: 2006-12-7 22:32
深山红叶使用SETACL0.98版本,基本上实现功能和gene771771一样,2.0的复杂很多

作者: ronin     时间: 2006-12-12 23:26
setacl和cacls设置了文件任意人只读,但只是不能修改,可以替换和删除

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



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

作者: rubik     时间: 2007-1-6 01:06    标题: 呵呵
注册表的权限很好改的,哪有这么麻烦,一条命令就够了。

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

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

作者: vkill     时间: 2007-11-20 21:40
http://setacl.sourceforge.net/html/examples.html

官方的介绍,很多了,我想应该一看就明白了

SetACL.exe -on "hklm\software\microsoft\policies" -ot reg -actn ace -ace "n:domain1\user1;p:full"

作者: 523066680     时间: 2008-2-24 14:06
英文版的解释……真好……可惜我英语不好不过cacls倒是经常用

作者: jolog     时间: 2008-3-15 10:08
好象是老帖子了
我想问一下修改某一项为完全控制怎么改啊?

作者: wangzenggogo     时间: 2008-5-29 19:02
基本上差不多 还可以

作者: binjie     时间: 2008-10-2 22:39
如何设置D:\*.exe的权限everyone为拒绝:写入属性和写入扩展属性?

作者: ili2006     时间: 2009-5-6 12:26
很强大 学习!!!

作者: temp1     时间: 2009-5-12 12:28
还没来得及研究,希望楼主把2.0的汉化帮助写出了
setacl-activex-2.0是做什么用的?

作者: temp1     时间: 2009-5-12 12:31
Originally posted by binjie at 2008-10-2 22:39:
如何设置D:\*.exe的权限everyone为拒绝:写入属性和写入扩展属性?


。。。D:\*.exe /d everyone:95 /e