Treesize可以查看其无权访问的文件夹和文件

时间:2019-02-08 13:39:51

标签: c# windows permissions

我在其中一台工作计算机上运行的程序有问题。

Treesize pro是一个程序,它将扫描一个区域(C:\,\\ nasdrive \ home等),并为您提供树状视图以及该区域的其他信息。

现在,我在具有管理员权限的帐户上运行该程序,当我午餐时,它会弹出用户帐户控制权。

但是,如果我搜索一个我的管理员帐户无权访问的区域(有几个),它将可以正常工作,并向我显示文件,文件夹,大小,修改日期和创建日期的所有信息。我无法打开文件,但可以看到它们的名称并进入子文件夹。如果在资源管理器中尝试此操作,我将得到access denied

我尝试使用我用C#编写的脚本来执行此操作,但是如果我尝试执行Directory.getDirectories();Directory.GetFiles();,但是即使我以admin身份运行程序(右键单击以admin身份运行)它只会在Catch块中发出access denied命令。

我真的很想知道Treesize如何设法列出我的帐户无法访问的文件夹,子文件夹和文件。

谢谢

1 个答案:

答案 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

您可以找到有关

的更多信息