2010-05-07 74 views
2

在c#中,在Windows 7机器上,如何以编程方式访问文件系统上的每个文件,就像我是“主管理员”一样。访问文件系统上的每个文件(不管是什么)在Windows 7

这里的主要优先事项是,安装了我的c#程序后,它不会遇到任何文件/文件夹访问权限问题。我的程序作为Windows服务运行,并且它必须允许用户备份文件系统上的任何文件。

+3

我相信你对于“备份”的含义过于简单。这不仅仅是复制文件。更重要的是,这并没有考虑到正在使用的文件,并且在进行备份时可能会被更改,从而使它们处于可能损坏的状态。您不考虑加密文件,备份和恢复EFS密钥,多个文件系统,文件状态,也不考虑系统状态或恢复方式。备份程序需要做很多事情,并且我建议您在开始编写大量代码之前就开始了解它的功能。 – 2010-05-07 19:49:28

+0

你提到的每件事都是有价值的。我的程序在Windows XP Pro上运行,但我试图让它在Windows 7上运行,并且我一直在运行Windows XP Pro“系统”帐户下运行的权限问题。 – 2010-05-07 20:00:17

回答

5

如果您确定该服务在Backup Operator组中的帐户下运行,我会认为它会起作用。我认为无论有什么权限,该组都可以访问所有文件。

报价从MS支持页面:

SID:S-1-5-32-551 名称:备份操作员 说明:内置组。默认情况下,该组没有成员。备份操作员可以备份和恢复计算机上的所有文件,而不管保护这些文件的权限。备份操作员也可以登录到计算机并关闭计算机。

尽管该页面适用于Windows的早期版本,所以我不能100%确定它未被更改。

+2

我不认为只有使用Backup Operator权限运行才能打开任何文件。我很确定你需要使用CreateFile API来打开FILE_FLAG_BACKUP_SEMANTICS集(也可能是其他一些标志)的文件。 – 2010-05-07 20:37:25

+1

我的评论和复制的报价都没有提及打开文件......当我写入访问时,我的意思是访问备份和恢复,虽然也许我应该拼写出来。 – 2010-05-07 21:30:18

2

您必须将服务配置为具有足够权限的帐户下运行。

AFAIK标准的“本地系统”已经拥有相当高的权限。但是,无论如何,您将无法访问为系统帐户保留的文件或专门使用的文件。您的程序将始终必须能够处理与Access相关的异常。