找回密码
 加入
搜索
查看: 6790|回复: 14

[AU3基础] AU3如何删除没有权限的文件夹及子文件(夹)

 火.. [复制链接]
发表于 2012-4-27 21:18:24 | 显示全部楼层 |阅读模式
本帖最后由 ssjoe 于 2012-4-28 19:03 编辑

如图,

谢谢各位的帮忙,因不是一台机子的问题,机子实在太多了,手动可以修改到,但是太麻烦,批处理是做不到的,所以想问问AU3是否有权限做到!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-4-27 21:28:20 | 显示全部楼层
你可以调用批处理命来做呢
发表于 2012-4-27 21:36:06 | 显示全部楼层
回复 2# f4李文杨


    楼上前辈,没有权限的也可以吗?
发表于 2012-4-27 21:54:48 | 显示全部楼层
如果文件不多的话,建议自己手工操作哦
发表于 2012-4-27 22:06:23 | 显示全部楼层
回复 1# ssjoe


    自然是先修改权限, 成功后再删除!
您应该搜索 "权限 修改"
发表于 2012-4-27 23:27:42 | 显示全部楼层
本帖最后由 pusofalse 于 2012-4-27 23:29 编辑

只要令牌中还有恢复(SeRestoreName)和取得所有者(SeTakeOwnershipName)的特权,权限什么的都可以无视,一般管理员用户的令牌中总是有这两个特权。
如果手动修改,先将所有者改为Administrators,再重新打开安全属性页修改Everyone为完全控制,并继承到所有子对象,这样就可以删除了。AU3代码:

#include <lsasecur.au3>

Const $sFilePath = @ScriptDir & "\test\"

Local $aPriv[2][2] = [[$SE_RESTORE_PRIV, $SE_PRIV_ENABLED], [$SE_TAKE_OWNERSHIP_PRIV, $SE_PRIV_ENABLED]]

Local $hToken = _SeOpenProcessToken(-1)
_SeAdjustTokenPrivs($hToken, $aPriv)
_SeCloseHandle($hToken)

Local $pTrustee = _SeLookupAccountName("Everyone")
Local $pDacl = _SeSetEntriesInAcl1($pTrustee, $SE_GENERIC_ALL, $SE_GRANT_ACCESS, BitOR($SE_OBJECT_INHERIT_ACE, $SE_CONTAINER_INHERIT_ACE, $SE_NO_PROPAGATE_INHERIT_ACE))

Local $pSecurity = _SeInitSecurityDescriptor()

_SeSetSecurityDescriptorDacl($pSecurity, $pDacl)
_SeSetSecurityDescriptorOwner($pSecurity, $pTrustee)

If _SeSetFileSecurity($sFilePath, $SE_INFO_OWNER, $pSecurity) Then
        If _SeSetFileSecurity($sFilePath, $SE_INFO_DACL, $pSecurity) Then
                MsgBox(48, "OK", _SeFormatMsg("", 0))
        Else
                MsgBox(48, "Error", _SeFormatMsg("Setting DACL"))
        EndIf
Else
        MsgBox(48, "Error", _SeFormatMsg("Setting Owner"))
EndIf

_SeHeapFree($pSecurity)
_SeHeapFree($pTrustee)
_SeLocalFree($pDacl)

评分

参与人数 1金钱 +10 收起 理由
user3000 + 10

查看全部评分

 楼主| 发表于 2012-4-28 18:59:21 | 显示全部楼层
回复 6# pusofalse

P版的东西就是如此难看懂,所以无法修改为继承到所有子对象,现在的只可以支持当前文件夹的删除,如果文件夹内还有同样没有权限的文件夹子文件,就无法删除了!请看子文件(夹)附上图片。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2012-5-2 14:31:35 | 显示全部楼层
回复 6# pusofalse


   P版,能否帮忙解决一下这个继承到所有子对象的问题,实在是找了很多方法也没法解决,因为不是一台机子出现这样的问题,数量比较多,人手解决会比较麻烦,希望P版能帮上这个忙,先谢谢了!
发表于 2012-5-2 14:39:52 | 显示全部楼层
管理员批量后台删呢?
发表于 2012-5-2 14:51:32 | 显示全部楼层
回复 9# ssjoe


         指明每个IP下相对文件的路径,然后循环用FileRecycle或者FileDelete试试呢?之前我们公司一些公共电脑下的C:\Documents and Settings的配置文件太多太大的时候我记得我这样搞过
 楼主| 发表于 2012-5-2 18:15:53 | 显示全部楼层
回复 11# 502762378


    是因为没有权限,所以无法删除,现在就是想把继承到所有子对象的问题,P版给的源码是当前文件夹的!
发表于 2012-5-2 20:59:33 | 显示全部楼层
回复 1# ssjoe
我也遇到过类似的问题,没有想到好的解决之道,只能用au3模拟键盘操作,稳定性不是很高,但是总比手动的要好的多
发表于 2012-5-4 16:34:04 | 显示全部楼层
用windows的自带命令不是可以吗?cacls.exe
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-28 18:51 , Processed in 0.082128 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表