2015-08-26 118 views
1

我正在做一個小項目。它是Windows窗體應用程序。我在文件夾中找到了一些源代碼(C:/ sources)。當我的程序運行時,它使用該文件夾中的源代碼。目前我可以通過Windows資源管理器編輯文件夾,它可能會導致我的程序錯誤。所以我想在我的程序運行時鎖定文件夾(C:/ sources)被編輯/重命名/刪除。如何做?C# - 鎖定文件夾被編輯

編輯; 是否有可能表現出這樣的消息,當用戶試圖修改該文件夾:

「無法完成操作,因爲該文件夾或其中的文件是在另一個程序中打開」

的程序我們正在談論的是我的..

回答

0

有一對夫婦的,你可以大膽的辦法,他們在實施的難度會有所不同。這完全取決於這項任務對你有多重要。但是,在討論這些選擇之前,你不能將這些資源嵌入到你的WinForms應用程序中嗎?如果這不是一個選項,那麼你可以做下列之一:

  1. 編寫設備驅動程序,如果您的應用程序正在運行,可以禁止這些資源的訪問。這種方法有一些回退。例如,可以通過具有相同名稱來模擬您的應用程序。但是,當我試圖解決當前問題的可能解決方案時,我並沒有過多地嘗試打破任何方法。您可以考慮不同類型的驅動程序。這種方法的最簡單形式可能是實現一個微型過濾器驅動程序。

  2. 鉤住某些API,如CreateFile(),NtCreateFile(),ZwCreateFile()雖然有很多方法可以規避這種防禦機制。但是,我們只是冒險嘗試解決你的這個限制。

  3. 直接從您的應用程序打開這些資源並專門鎖定它。例如:
    File.Open("test.txt", FileMode.Open, FileAccess.Read, FileShare.None);
    因爲這會導致人們在您嘗試打開文件時收到您希望的消息。

也許您可以提供有關這些資源的更多信息,我們可以幫助您確定哪種方法可以合理地保護您的文件?

0

儘管我不認爲最好的辦法是在像C:驅動器這樣的開放區域中存放對於應用程序至關重要的文件,我會查看NTFS文件權限並設置該文件夾只讀,但這不會停止管理用戶

看到這兩個pos TS

restrict access to folder outside of program c#

Setting NTFS permissions in C#.NET

+0

嘿Wamadahama,感謝您的建議,我試圖找到一個解決方案來解決這個問題,我想在Windows資源管理器中的這條消息「的行動無法完成,因爲該文件夾或其中的文件是打開在另一個程序中「,還有其他解決方案嗎? –

+0

將文件置於不易訪問的位置(如%appdata%)可能會更好,但該消息會阻止某些打開它 – Wamadahama