删除文件失败,错误码是5,手动删除的时候提示需要 trustinstaller权限
通过cacls看一下所在目录的权限
C:\Windows\system32>cacls "C:\Program Files\Internet Explorer\iexplore.exe"
C:\Program Files\Internet Explorer\iexplore.exe NT SERVICE\TrustedInstaller:F
BUILTIN\Administrators:R
NT AUTHORITY\SYSTEM:R
BUILTIN\Users:R
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:R
APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包:R
以前从不知道哪里的渠道得知takeown和icacls组合使用的方法
C:\Windows\system32>takeown /f "C:\Program Files\Internet Explorer" /r /d n /a
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\en-US" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\ExtExport.exe" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\hmmapi.dll" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\iediagcmd.exe" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\ieinstal.exe" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\ielowutil.exe" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\IEShims.dll" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\iexplore.exe" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\images" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\sqmapi.dll" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\en-US\hmmapi.dll.mui" 现在由管理员组所有。
成功: 此文件(或文件夹): "C:\Program Files\Internet Explorer\images\bing.ico" 现在由管理员组所有。
C:\Windows\system32>icacls "C:\Program Files\Internet Explorer" /inheritance:e /c
已处理的文件: C:\Program Files\Internet Explorer
已成功处理 1 个文件; 处理 0 个文件时失败
再次删除,除了提示需要管理员权限,需要点击一下确定外,并没有什么异常。
两个命令都需要执行,执行了takeown之后,依然不能删除
icacls的参数参考
takeown参考
里面介绍了权限相关的介绍,可以
/grant授予权限
/deny拒绝权限
/remove移除权限
/setowner设置说有者
想要通过程序实现,可以参考Acess Control系列的windows api
Access Control (Authorization) - Win32 apps | Microsoft Docs