我在其中一台工作计算机上运行的程序有问题。
Treesize pro是一个程序,它将扫描一个区域(C:\,\\ nasdrive \ home等),并为您提供树状视图以及该区域的其他信息。
现在,我在具有管理员权限的帐户上运行该程序,当我午餐时,它会弹出用户帐户控制权。
但是,如果我搜索一个我的管理员帐户无权访问的区域(有几个),它将可以正常工作,并向我显示文件,文件夹,大小,修改日期和创建日期的所有信息。我无法打开文件,但可以看到它们的名称并进入子文件夹。如果在资源管理器中尝试此操作,我将得到access denied
。
我尝试使用我用C#编写的脚本来执行此操作,但是如果我尝试执行Directory.getDirectories();
和Directory.GetFiles();
,但是即使我以admin身份运行程序(右键单击以admin身份运行)它只会在Catch块中发出access denied
命令。
我真的很想知道Treesize如何设法列出我的帐户无法访问的文件夹,子文件夹和文件。
谢谢
答案 0 :(得分:3)
TreeSize 通过 NTFS 备份 API 读取数据(参见 https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/back-up-files-and-directories)。
来自 treesize 的注释: https://manuals.jam-software.de/treesize/EN/notesonntfs.html
<块引用>访问控制列表 可以限制用户访问文件和文件夹的方式。可以授予或拒绝其他用户或组某些权限 [...]。这样一来,甚至可以拒绝管理员访问文件和文件夹。如果管理员尝试访问 Windows 资源管理器中所有者拒绝任何其他用户读取访问权限的文件夹,则会显示“拒绝访问”错误消息。但是,如果您以管理员身份或有权执行备份的用户身份登录,TreeSize 能够扫描此类文件夹(可以在“控制面板 > 管理工具 > 本地安全策略”中更改此选项,并使用用户Windows 编辑器)。
可在 https://docs.microsoft.com/en-us/windows/win32/fileio/file-security-and-access-rights
中深入了解访问权限 <块引用>SE_BACKUP_NAME 和 SE_RESTORE_NAME 访问权限是专门为提供这种备份应用程序的能力而创建的。如果在备份应用程序进程的访问令牌中授予并启用了这些权限,则它可以调用 CreateFile 打开您的文件或目录进行备份,将标准 READ_CONTROL 访问权限指定为 dwDesiredAccess 参数的值。但是,要将调用进程标识为备份进程,对 CreateFile 的调用必须在 dwFlagsAndAttributes 参数中包含 FILE_FLAG_BACKUP_SEMANTICS 标志。这将允许备份应用程序打开您的文件并覆盖标准安全检查。
from abc import ABC, abstractmethod
_registry = {}
def register_class(cls):
_registry[cls.__name__] = cls
def factory(name):
return _registry[name]()
class Base(ABC):
def __init_subclass__(cls, **kwargs):
# always make it colaborative:
super().__init_subclass__(cls, **kwargs)
register_class(cls)
class Derived1(Base):
pass
您可以找到有关
的更多信息