簡體   English   中英

如何在.net中鎖定文件,以便只有我的應用可以訪問它?

[英]How can I lock a file in .net so that only my app can access it?

我閱讀有關文件鎖定的查詢,但要么他們引用多個文件訪問問題或其他。對此的響應將使用FileStream.Lock鎖定文件,使用FileShare.None與File.Open等鎖定,但鎖定說100個文件不是一個好的編程習慣,在這些情況下,如果我的應用程序關閉/崩潰我也不會想要鎖定,即我希望鎖定持續存在,只有我的應用程序可以為其他人打開它。

在MSDN上,我發現System.Security,System.Security.AccessControl命名空間,我相信這些可能help.Also 文章將闡明我想要的一些情況。

編輯::

Mannnnn ...有人提到我提供的“這個”鏈接。

好的......總之我想要一些PC安全軟件所做的事情。那敲響了鍾聲......有人用它嗎????

謝謝。

這是不可能的。 具有足夠權限的用戶始終可以更改安全設置並運行程序來訪問您的文件。 因此,假設您無法停止此操作並專注於程序或用戶可以對文件中的數據執行的操作。

加密它。

這里的要求存在一個基本缺陷,那就是文件系統只有一種阻止訪問文件的方法,即通過ACL。 您可以指定登錄到系統的用戶沒有這些文件的訪問權限,因此他無法使用這些文件。

但是,為了使您的程序能夠訪問這些文件,您需要設置一個“登錄”的用戶才能運行您的程序,當然還有任何其他程序配置為以該用戶可以訪問的方式運行那些文件。

其他鎖定,例如打開文件以進行獨占訪問,就像您已經發現的那樣只在程序運行時才有效。 如果由於任何原因程序未運行,則這些類型的鎖不到位。

你有什么具體的預防措施? 可能有其他方法來處理它而不是試圖鎖定文件。

您可以加密文件並將密鑰嵌入應用程序中。 這取決於你的意思“只有我的應用程序可以為他人打開它”。

我認為你想要的東西只能通過使用文件系統minifilter驅動程序。 許多其他應用程序通過使用通用屏蔽等驅動程序來提供此功能,您可以在其中將進程設置為受信任,因此只有受信任的進程才能訪問該文件/文件夾,其他應用程序(如文件夾保護)也會在文件/文件夾上提供此類權限。

我建議使用IsolatedStorage類。 在那里,您可以存儲直接“鏈接”到您的應用程序的文件。

MSDN IsolatedStorage中仔細查看它。 您可以使用作用域的文件程序集 無論如何,每個用戶都可以通過文件系統導航到您的applicationData文件夾並手動打開該文件(盡管這是相當意外的)

您正在嘗試找到一種方法來實現方法(“鎖定”文件)而不是實現目標。

我假設您想要保存一些私有數據,並可選擇提供對其他應用程序的數據訪問。 在這種情況下,您需要一個加密容器,可以將其暴露給其他應用程序,例如通過虛擬磁盤(在這種情況下,我們的SolFS OS版本是最佳變體)。

但是,問題是密鑰將保存在應用程序的代碼中,理論上可以提取並用於訪問容器。 實際上,程序可以變得更復雜,但這不是100%防彈解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM