我正在使用以下命令拒绝执行权限应用程序数据目录:
icacls $env:userprofile\AppData /deny "*S-1-1-0:(OI)(CI)(X)"
问题是,执行此操作后,我无法secedit.exe
再使用该工具,因为它总是返回Access is denied
错误:
PS Z:\Ander\Temp> secedit /export /cfg testSecedit.cfg /areas USER_RIGHTS
Access is denied.
The task has completed with an error.
See log %windir%\security\logs\scesrv.log for detail info.
我已经检查过了C:\Windows\security\logs\scesrv.log
,但是那里没有写任何东西。
我很困惑,因为显然Secedit.exe
工具并不位于$env:userprofile\AppData
树下。
Secedit.exe
使用以下命令恢复权限后开始工作:
icacls $env:userprofile\AppData /reset /t
Secedit.exe
因此,我的问题是,如果该工具不在权限范围内,为什么这个权限修改会影响该工具?应用程序数据目录?我使用的是 Windows 7 Professional 32 位系统。
答案1
经过一番研究,我发现,上述不良情况并不是在我修改 AppData 权限时发生的,而是在以下两种情况结合时发生的:
1-拒绝所有用户在 AppData 目录中的执行权限:
icacls $env:userprofile\AppData /deny "*S-1-1-0:(OI)(CI)(X)"
2- 删除所有用户SeChangeNotifyPrivilege
2- 从(绕过遍历检查) 正确的。
如图所示这里,有一些用户/组可以被授予而SeChangeNotifyPrivilege
无需进行以下发现:
如果除以下账户或组之外的任何账户或组被授予“绕过遍历检查”权限,则会出现以下情况:
管理员、用户、本地服务、网络服务
因此,我授予了如上所述的权利,并且现在secedit.exe
即使应用了第一个条件也可以正常工作,并且我有预期的行为。