繁体   English   中英

查找所有文件,无论权限如何(Windows XP,C#)

[英]Finding ALL files regardless of permissions (Windows XP, C#)

无论权限如何,我都需要在硬盘驱动器 (在C:分区中)中找到所有文件 (Windows XP Pro,使用C#)

在先前的问题中,有人告诉我:

无法查看“ C:\\ System Volume Inforamtion”文件夹,因为该文件夹仅分配给SYSTEM用户。 为了查看其中的内容,您需要拥有它的所有权。 但是,出于安全原因,不建议这样做。 – Alex Mendez

我已经使用Windows多年了,这是我第一次听说SYSTEM用户(这解释了我过去的许多挫败感)。 我以为“管理员”类似于UNIX中的“ root”用户,它可以访问所有内容。

在Windows中,最终用户拥有一切吗?

如果是这样,那个用户是谁?

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

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

我非常确定,访问这些文件夹*的唯一方法是以Ring-0的身份运行,Ring-0是内核级别用户的CPU自己的分区。 这也是某些恶意软件/ Rootkit将其钩住您的系统的方式。

我非常有信心,这不是您可以在.Net中实现的功能,而且我不确定如果不编写系统级驱动程序(.sys文件)就可以真正实现它。

无论如何,文件系统都适用于OS,如果您使用的是NTFS格式的驱动器,并且内容已加密,那么超级读取驱动程序将不会为您解密文件。

编辑:那些文件夹是系统文件夹,如果可以P调用BackupRead / Write函数,则可以访问其他数据。

我相信FILE_FLAG_BACKUP_SEMANTICS基本上FILE_FLAG_BACKUP_SEMANTICS您的需求。

您可以交互方式(作为SYSTEM)运行应用程序(或命令提示符)。 例如,参见对此问题的公认答案。 应用程序运行交互式上下文后,便可以直接打开“系统卷信息”。

[编辑添加说明:]

在Windows中,最终用户拥有一切吗?

否。有一个特权SeTakeOwnershipPrivilege,默认情况下,该特权授予管理员(隐式为System),以允许获取对象的所有权。 对象所有者可以随时更改ACL来授予自己访问权限。

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

如果是这样,那个用户是谁?

没有这样的用户。 默认情况下,Windows仅通过该目录上的ACL授予SYSTEM对C:\\ System Volume Information的访问权限。

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

您可以将程序作为SYSTEM专门运行以查看“系统卷信息”(按上述方法),尽管这并不一定会让您查看所有文件。 我认为具有备份操作员特权和使用备份标志执行读取操作是查看所有文件的唯一机制,而不管权限如何。

不,没有root用户可以访问所有内容。 以SYSTEM或Administrator或任何其他用户身份运行不会解决您的问题。 您已经解决了一个非常复杂的问题,而在C#中完成它将是一个额外的挑战。 我建议重新考虑使用C#。

这里开始,阅读FILE_FLAG_BACKUP_SEMANTICS标志的描述以及那里的有关如何更改令牌特权的链接。 基本上,您将不得不临时更改对您没有读取访问权限的每个文件/目录的访问权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM