2011-01-31 48 views
3

我讀取關於文件鎖定的查詢,但是它們引用多個文件訪問問題或其他內容。對此的使用響應將使用FileStream.Lock鎖定文件,File.Open等使用FileShare.None,但鎖定說一個100個文件不是一個好的編程習慣,在這些情況下,如果我的應用程序關閉/崩潰,我也不希望這種鎖定會被釋放,也就是說,我希望鎖定持續下去,只有我的應用程序可以爲其他人打開它。如何鎖定.net中的文件,以便只有我的應用可以訪問它?

關於msdn,我發現System.Security,System.Security.AccessControl命名空間,我相信這些可能會有所幫助。另外this文章將闡明我想要的東西。

編輯::

Mannnnn ......有沒有人提到的「這個」鏈接我提供的。

好的...總之我想要一些什麼PC安全軟件does.es響鈴......誰使用它?

謝謝。

+0

當然,訪問控制的東西是基於用戶的,而不是基於應用的?我想你可以爲你的應用程序創建一個用戶:/ – Lloyd 2011-01-31 10:06:52

+3

我不明白。你說你遇到的解決方案不會工作,因爲他們不允許你一次鎖定100個文件,因爲這是不好的編程習慣。但是,無論如何,你似乎都想這樣做,否則這些解決方案*將會爲你工作。是的,當你的應用程序崩潰時,文件鎖定會被釋放;這是通過設計。你的應用聽起來非常糟糕。 – 2011-01-31 10:07:05

回答

0

我會推薦使用IsolatedStorage類。在那裏你可以存儲一個直接「鏈接」到你的應用程序的文件。

請仔細看一下MSDN IsolatedStorage。您可以使用文件程序集範圍。反正每個用戶可以通過文件系統導航應用 -文件夾,並手動打開此文件(雖然它是相當意外)

1

有一個在這裏你需要一個基本的缺陷,那就是文件系統只具有一種防止訪問文件的方法,即通過ACL。您可以指定登錄到系統的用戶無權訪問這些文件,因此這些文件對他無效。

但是,爲了使您的程序能夠訪問這些文件,您需要設置一個「登錄」用戶來運行程序,當然還有其他配置爲以該用戶身份運行的程序將有權訪問這些文件。

其他鎖,如打開文件進行獨佔訪問,就像您已經發現只在程序運行時纔有效。如果由於某種原因程序沒有運行,那些類型的鎖不適用。

什麼具體你試圖阻止?可能還有其他的方法來處理,而不是試圖鎖定文件。

1

您可以加密文件並在應用程序中嵌入密鑰。這取決於你的意思是「只有我的應用程序可以爲別人打開它」。

0

您正試圖找到一種實現方法(「鎖定」文件)而不是實現目標的方法。

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

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

2

這是不可能的。擁有足夠特權的用戶可以隨時更改安全設置並運行程序來訪問您的文件。所以,假設你無法阻止這一點,並專注於程序或用戶可以用文件中的數據做什麼。

加密它。

0

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

相關問題