2010-03-06 39 views
4

在WPF應用程序中,我使用.txt文件來保存一些信息。應用程序可以讀取/寫入.txt文件中的數據。一切正常,但問題是,爲了達到這個目的,我必須爲應用程序的用戶授予這些文件的寫入權限,因此他/她可以手動編輯這些文件。如何防止用戶手動更改文件?

如何在不向用戶授予相同級別的權限的情況下爲應用程序設置編輯.txt文件的訪問權限?

編輯(添加):

得到一些意見和答案後,我把這個問題這樣(只是爲了使我的問題更加清晰,不僅限於用戶訪問權限範圍):如何我可以阻止用戶手動更改文件?

回答

6

加密,或數字標牌它

+0

+ 1 - 這正是我在OP編輯之後所說的。 – slugster 2010-03-06 11:20:54

+0

是的,我想過加密。但只是想知道,如果還有其他方法。 +1謝謝! – rem 2010-03-06 17:13:28

+0

用戶可能不知道他們在加密文件中正在編輯什麼內容,但他們可能會以相同的方式破壞它。簽名可以讓你檢測到腐敗。將內容保存在用戶無法直接訪問的數據庫中可能會達到預期的目的。 – HABO 2012-01-30 16:28:22

3

我打算假設你不是在試圖阻止用戶手動更改文件,而只是想要防止專門爲該文件分配權限的額外步驟。

您很可能正在寫入保護區域中的文件(引入UAC後受保護的區域)。爲避免出現這種情況,請將文件寫入其中一個「已批准」區域,如%APPDATA%。下面是幾個列表(假設C是引導驅動器):

C:\Users\username\Documents 
C:\Users\username\AppData\Local 
C:\Users\username\AppData\Roaming 
C:\Users\Public\Documents 
C:\ProgramData 

This article有一大堆圍繞從中可以挑櫻桃位信息的。

+0

事實上,我的意思恰恰相反:我如何防止用戶手動更改文件?對不起我的英語不好。謝謝你的信息,但是它是有用的。+ 1 – rem 2010-03-06 08:56:53

3

這可能是矯枉過正,但你可以創建一個不同的用戶帳戶,它可以編輯文件運行的服務。然後您的應用程序將使用該服務來訪問該文件。

通過這種方式,您可以防止不必要的更改和/或記錄文件的每一項更改。

+0

這是一個有趣的建議,謝謝+1 – rem 2010-03-06 17:09:11