我正在开发一个 C# 应用程序。
我需要更改文件夹上的 ACL,为此我以提升的管理员身份运行我的程序,并且一切正常。
问题是,如果拥有该文件夹的用户已从系统中删除,那么当我尝试获取该文件夹的所有权时,我会遇到未经授权的异常。
这是失败的代码:
using (new PrivilegeEnabler(Process.GetCurrentProcess(), Privilege.TakeOwnership))
{
var directorySecurity = directoryInfo.GetAccessControl();
directorySecurity.SetOwner(WindowsIdentity.GetCurrent().User);
Directory.SetAccessControl(directoryInfo.FullName, directorySecurity);
}
异常发生在一行:directoryInfo.GetAccessControl();
PrivilegeEnabler 是Process Privileges中定义的一个类,它用于获取文件的所有权。