@echo off & title 分析指定目录中指定用户的权限 By 依梦琴瑶
cd /d %~dp0
::设置指定用户
set User=user
::设置要分析的主目录
set ScrDir=D:\123
::设置分析的类型
::全 部 = 0
::文 件 = 1
::文件夹 = 2
set DoF=2
if %DoF% equ 0 (
set "DoF="
) else (
if %DoF% equ 1 (
set "DoF=/a-d "
) else (
if %DoF% equ 2 (
set "DoF=/ad "
)
)
)
if not exist "%SystemRoot%\System32\icacls.exe" (
echo 由于您的系统目录 %SystemRoot%\System32 中缺失 icacls.exe
echo 因此我无法继续为您服务了 T_T 再见,我会想您的。
pause
exit
)
tasklist | findstr /i "icacls.exe" >nul && (
echo 在您的进程列表中发现了 icacls.exe 进程,如果该进程处理的目
echo 录正好是您要分析的目录,那么有可能会因为占用而无法分析哦!
echo 若您按下任意键,那么我将会结束它,并执行本次的分析。
echo 若您不想结束它,那么请直接点击 × 符号来关闭本窗口。
pause
taskkill /f /im icacls.exe
)
cls & echo 用户 %User% 拥有的权限正在玩命分析中,耐心等我一下哈 ....
(for /f "delims=" %%i in ('dir %DoF%/s /b "%ScrDir%\*"') do (
Echo 用户 %User% 拥有 "%%~i" 的权限如下:
call :GetPermInfo "%%~i"
))>"用户%User%拥有的权限.Log"
echo, & echo 分析完成,请查看“用户%User%拥有的权限.Log”
pause
exit
:GetPermInfo
setlocal enabledelayedexpansion
for /f "tokens=2,3 delims=:" %%a in ('icacls "%~s1" ^| findstr /i "%User%:"') do (
if /i "%%~a"=="%~spnx1 %User%" (
set QX=%%b
) else (
set QX=%%a
)
set QX=!QX:DENY=拒绝!
set QX=!QX:OI=对象继承!
set QX=!QX:CI=容器继承!
set QX=!QX:IO=仅继承!
set QX=!QX:NP=不传播继承!
set QX=!QX:I=从父容器继承的权限!
set QX=!QX:AD=附加数据/添加子目录!
set QX=!QX:AS=访问系统安全性!
set QX=!QX:DC=删除子项!
set QX=!QX:DE=删除!
set QX=!QX:F=完全访问权限!
set QX=!QX:GA=全为一般性!
set QX=!QX:GE=一般性执行!
set QX=!QX:GR=一般性读取!
set QX=!QX:GW=一般性写入!
set QX=!QX:MA=允许的最大值!
set QX=!QX:M=修改权限!
set QX=!QX:N=无访问权限!
set QX=!QX:RA=读取属性!
set QX=!QX:RC=读取控制!
set QX=!QX:RD=读取数据/列出目录!
set QX=!QX:REA=读取扩展属性!
set QX=!QX:RX=读取和执行权限!
set QX=!QX:R=只读权限!
set QX=!QX:S=同步!
set QX=!QX:WA=写入属性!
set QX=!QX:WDAC=写入自主访问控制!
set QX=!QX:WD=写入数据/添加文件!
set QX=!QX:WEA=写入扩展属性!
set QX=!QX:WO=写入所有者!
set QX=!QX:D=删除权限!
set QX=!QX:W=只写权限!
set QX=!QX:X=执行/遍历!
set QX=!QX:,=、!
echo !QX!
)
endlocal
echo, & goto :eof
这个批处理主要是用到了cacls命令来更改文件(夹)的访问权限.
你再用此命令把它改回来就行了.命令:
echo
y|cacls
"你要处理的文件(夹)"
/c
/p
everyone:f
其中everyone代表任何用户,后面的参数是访问权限,f即代表完全控制,在administraton帐户下运行这条命令.
cacls命令详细用法,你进cmd后输入cacls/?回车查看,写的很清楚..