我正在尝试使用以下代码获取目录的所有权:
sd = win32security.SECURITY_DESCRIPTOR()
sd.SetSecurityDescriptorOwner(curUser, False)
win32security.SetFileSecurity("C:/ProgramData/Test",
win32security.OWNER_SECURITY_INFORMATION, sd)
SetFileSecurity
调用失败,并出现“拒绝访问”错误。在
当前用户的访问权限已从此目录中删除。在资源管理器中我可以看到它,但是当我试图打开它时,我首先必须以管理员的身份取得所有权。这在Explorer中有效,但是上面的代码是用提升的权限执行的,由于某些原因它仍然失败。有什么建议吗?在
您可以通过启用
SeTakeOwnerShipPrivilege
强制获得所有权,但当然只有在您的访问令牌具有此特权(例如,提升的管理员)的情况下。另外,您可以通过启用SeRestorePrivilege
,将所有权强制分配给另一个安全主体,例如SYSTEM
。如果没有后者,赋值可能会失败,并出现错误代码ERROR_INVALID_OWNER
。在下面的
set_file_owner
函数有一个force
选项,它试图暂时启用这两个特权。在示例
^{pr2}$输出
相关问题 更多 >
编程相关推荐