C# 查找所有文件而不考虑权限(Windows XP,C)

C# 查找所有文件而不考虑权限(Windows XP,C),c#,permissions,system,administrator,ownership,C#,Permissions,System,Administrator,Ownership,我需要在C:分区中查找硬盘上的所有文件,无论权限如何。 Windows XP Pro,使用C 在前面的一个问题中,我被告知: 无法查看C:\System Volume Information文件夹,因为它仅分配给系统用户。为了看到它的内部,你需要拥有它。但是,出于安全原因,不建议这样做亚历克斯·门德斯 我在Windows上工作了很多年,这是我第一次听说一个系统用户,它解释了我过去遇到的许多挫折。我假设管理员与UNIX中的root用户相似,可以访问所有内容 在Windows中,是否存在拥有一切的最

我需要在C:分区中查找硬盘上的所有文件,无论权限如何。 Windows XP Pro,使用C

在前面的一个问题中,我被告知:

无法查看C:\System Volume Information文件夹,因为它仅分配给系统用户。为了看到它的内部,你需要拥有它。但是,出于安全原因,不建议这样做亚历克斯·门德斯

我在Windows上工作了很多年,这是我第一次听说一个系统用户,它解释了我过去遇到的许多挫折。我假设管理员与UNIX中的root用户相似,可以访问所有内容

在Windows中,是否存在拥有一切的最终用户

如果是,该用户是谁

如果是这样,我如何以该用户的身份运行我的C程序,以便查看所有文件?


如果没有,还有其他方法吗?其他程序也可以这样做。

我很确定,访问这些文件夹*的唯一方法是以Ring-0运行,这是内核级用户的CPU自己的分区;这也是一些恶意软件/rootkit将它们的钩子插入系统的方式

我很有信心,这不是在.Net中可以实现的,而且我也不确定如果不将系统级驱动程序编写为.sys文件,您是否能够真正实现它

无论如何,文件系统适用于操作系统,如果您在NTFS格式的驱动器上,并且内容是加密的,那么使用超级全读驱动程序不会为您解密文件


编辑:这些文件夹是系统文件夹,如果您可以通过PInvoke的BackupRead/Write功能,您可能可以访问其他数据。

我相信您可以完成大部分需要的工作。

您可以在系统中以交互方式运行应用程序或命令提示符。例如,请参见对的公认答案。一旦应用程序运行交互式上下文,它就可以直接打开系统卷信息

[编辑以添加澄清:]

在Windows中,是否存在拥有一切的最终用户

否。有一个特权SeTakeOwnershipPrivilege,默认情况下授予管理员,并隐式授予允许获取对象所有权的系统。对象所有者始终可以更改ACL以授予自己访问权限

还有另一个特权,即SeBackupPrivilege,授予管理员和备份操作员,以及系统管理员。它旨在允许读取文件以执行备份,并绕过正常的读取操作。这有效地允许对任何文件进行读取访问,绕过了正常的访问控制限制

如果是,该用户是谁

没有这样的用户。默认情况下,Windows仅允许系统通过该目录上的ACL访问C:\SYSTEM卷信息

如果是这样,我如何以该用户的身份运行我的C程序,以便查看所有文件


您可以作为系统运行该程序,专门查看上述的系统卷信息,尽管这不一定让您查看所有文件。我认为拥有备份操作员权限并使用备份标志执行读取操作是查看所有文件的唯一机制,而不管权限如何。

不,没有根用户可以访问所有内容。以系统管理员或任何其他用户的身份运行不会解决您的问题。您已经处理了一个非常复杂的问题,用C语言完成它将是一个额外的挑战。我建议重新考虑C的使用


启动并阅读FILE_FLAG_BACKUP_SEMANTICS FLAG的说明以及其中有关如何更改令牌权限的链接。基本上,您必须临时更改您没有读取权限的每个文件/目录的访问权限。

您是否试图以编程方式执行此操作?不过,我敢说,除了单个文件的安全性之外,如果您可以通过编程获得对象的所有权,管理员可以拥有所有内容并获得访问权,但这并不意味着您将从该文件中获得有意义的信息。这不是.Net的东西,我不知道PInvoke et all是否允许您使用这些功能,但基于这些语义,此线程可能会为您指出正确的方向: