如何創建只有我的應用程式才能修改的檔案?我需要它,因為我有一個應用程式可以創建一個.txt存盤用戶資訊的檔案,并且我不希望用戶能夠通過檔案資源管理器對其進行修改,但我的應用程式應該能夠創建、修改和洗掉它.
這是我的代碼:
public void Write(List<Queue> Queue)
{
try
{
CreateFile();
using (FileStream Stream = new FileStream(Path, FileMode.Open))
{
using (StreamWriter file = new StreamWriter(Stream))
{
string Data = JsonSerializer.Serialize(Queue);
file.Write(Data);
file.Flush();
file.Close();
}
}
}
catch (IOException ex)
{
Log.GetInstance().Write(ex.Message);
}
public void CreateFile()
{
if (!FileExist)
{
File.Create(Path).Close();
}
}
public List<Queue> ReadFile()
{
try
{
if (FileExist)
{
using (StreamReader file = new StreamReader(Path))
{
string Data= file.ReadToEnd();
return JsonSerializer.Deserialize<List<Cola>>(Data);
}
}
}
catch (JsonException ex)
{
Log.GetInstance().Write(ex.Message);
}
catch (IOException ex)
{
Log.GetInstance().Write(ex.Message);
}
return null;
}
uj5u.com熱心網友回復:
據我所知,你不能。無論哪種方式,用戶和/或管理員都可以訪問該檔案。但是,您可以通過散列檔案并將散列與檔案進行比較來檢測修改
uj5u.com熱心網友回復:
您可以加密檔案以防止篡改。好吧,至少任何篡改都會損壞檔案。
CLR 有一種機制可以為特定用戶加密資料,而無需單獨生成和存盤密鑰。這使用了 中的
并且內容data.enc完全加密:

uj5u.com熱心網友回復:
如何創建只有我的應用程式才能修改的檔案?
你不能。就那么簡單。
問題是管理員可以訪問所有檔案。以及與您一起運行您的應用程式的用戶。當然還有黑客。/var/lib/myapp;) 通常,您只需將應用程式檔案存盤在一些完善的位置,例如,將應用程式檔案放在 unix 系統中是一個事實上的標準。當然,其他用戶仍然可以訪問這些檔案,但這樣至少可以降低意外修改的風險。然而,這也意味著您永遠不應該在本地存盤敏感資料。
加密并不是一個真正的選擇,因為您必須將加密密鑰存盤在某個地方,這只會將一堆從一個地方移動到另一個地方。它確實使讀/寫變得更加困難,但并不能真正解決問題。除非您不在任何地方存盤密鑰,例如您在應用程式啟動時手動提供它,或者在運行時更好地提供它,并且您確保它不會存活太久。根據您的用例,這可能是一個有效的選項。
修改檢測,即散列檔案,具有完全相同的問題:您必須將散列存盤在某處。您只強制惡意用戶修改兩個位置而不是一個。
請注意,在本地使用資料庫引擎根本沒有幫助。歸根結底,資料庫只是一個花哨的檔案,您仍然需要在某處存盤訪問密鑰。
總而言之:如果您要存盤非敏感資料,請將其放在應用程式資料檔案夾中,不要擔心。
uj5u.com熱心網友回復:
不確定您的應用程式應該做什么,但實作此目的的方法是在計算機上創建一個新用戶或組并以該用戶身份運行您的應用程式。然后,您可以使用SetAccessControl使用戶或組具有讀/寫權限,而其他所有人都具有讀權限。這實際上應該是一個 Windows 服務而不是一個應用程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/463148.html
