[英]How to lock a directory and prevent it from being deleted?
我需要檢查目錄是否存在,如果不存在則創建它,並在應用程序啟動時將其鎖定。 因此,只要應用程序運行,任何人都無法刪除該目錄。
我想我可以在它里面保存一個啞文件並保持打開狀態,這樣它不能被刪除,但我寧願不這樣做 。 我該如何實現?
現在,我需要在其中寫入文件時執行此操作:
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
即使在此示例中,仍然可以刪除Directory.CreateDirectory
和File.Create
調用之間的Directory.CreateDirectory
。
在目錄中創建一個虛擬臨時文件,並在程序有效期內保持打開狀態。 這樣,任何試圖刪除目錄的人都會收到“目錄正在使用”錯誤消息,並且無法刪除。
我建議您在某個地方創建一個臨時文件夾,並在該處進行所有處理,一旦完成,就創建文件並將其移動到目標文件夾。 成功完成所有操作后,您可以刪除您的臨時文件夾。
在目錄上使用CreateFile WINAPI函數。 沒有經過測試,但我認為它可以工作。
[DllImport("kernel32.dll", SetLastError = true)]
private static extern SafeFileHandle CreateFile(
string lpFileName,
FileAccess dwDesiredAccess,
FileShare dwShareMode,
IntPtr lpSecurityAttributes,
FileMode dwCreationDisposition,
int dwFlagsAndAttributes,
IntPtr hTemplateFile);
const int FILE_FLAG_BACKUP_SEMANTICS = 0x02000000;
var dirlock = CreateFile("C:\\mydir", FileAccess.Read, FileShare.None, IntPtr.Zero, FileMode.Open,
FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.