2010-05-07 72 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相關的異常。