CODE: [Copy to clipboard]
:::::::::::::::::::::::::::::::::::::::::
:: ::
:: CACLS 与 desktop.ini 结合实例 ::
:: ::
:: (C)20009 qinchun36 cn-dos.net ::
:: ::
:::::::::::::::::::::::::::::::::::::::::
@echo off
set clsidCabFile={0CD7A5C0-9F37-11CE-AE65-08002B2E1262}
set clsidFolderShortcut={0AFACED1-E828-11D1-9187-B532F1E9575D}
:: 如果是直接打开则显示用法
set arg1="%1"
if "%arg1:"=%"=="" goto usage
:: 获取文件夹路径,并据此生成配置文件的路径
set dirPath="%arg1:"=%"
set iniPath="%arg1:"=%\desktop.ini"
set iniBack="%arg1:"=%\desktop.ini.log"
goto chooseOperate
:usage
echo.
echo 把要处理的文件夹拖到我上面来!
goto end
:chooseOperate
echo.
echo 选择要对此文件夹进行的设置
echo ----------------------------
echo 1 不显示属性,拒绝访问,UI界面不能修改安全
echo 2 看起来是个空文件夹
echo 其他 恢复成原形
echo ----------------------------
set /p op=
if "%op%"=="1" (
set clsid=%clsidFolderShortcut%
goto work
) else (
if "%op%"=="2" (
set clsid=%clsidCabFile%
goto work
) else (
goto reset
)
)
:work
:: 设置访问权限为允许所有
echo y|cacls %dirPath% /g everyone:f 1>nul
:: 备份配置文件,如果有的话。
if exist %iniPath% (
attrib %iniPath% -s -h -r
:: 防止重复修改备份文件
if not exist %iniBack% (type %iniPath% > %iniBack%)
)
:: 写入信息
echo>%iniPath% [.ShellClassInfo]
echo>>%iniPath% CLSID=%clsid%
:: 添加系统属性以使设置生效
attrib %dirPath% +s
attrib %iniPath% +s +h
:: 设置访问权限为拒绝所有
echo y|cacls %dirPath% /d everyone 1>nul
echo 已处理文件夹:
echo %dirPath%
goto end
:reset
:: 设置访问权限为允许所有
echo y|cacls %dirPath% /g everyone:f 1>nul
attrib %dirPath% -s
attrib %iniPath% -s -h -r
:: 删除配置文件。恢复原配置文件(如果有的话)。
del /f /q %iniPath%
if exist %iniBack% (
type %iniBack% > %iniPath%
attrib %iniPath% +s +h
del /f /q %iniBack%
)
echo 已恢复文件夹:
echo %dirPath%
goto end
:end
pause>nul
[