簡體   English   中英

如何鎖定目錄並防止其被刪除?

[英]How to lock a directory and prevent it from being deleted?

我需要檢查目錄是否存在,如果不存在則創建它,並在應用程序啟動時將其鎖定。 因此,只要應用程序運行,任何人都無法刪除該目錄。

我想我可以在它里面保存一個啞文件並保持打開狀態,這樣它不能被刪除,但我寧願不這樣做 我該如何實現?


現在,我需要在其中寫入文件時執行此操作:

if (!Directory.Exists(path))
    Directory.CreateDirectory(path);

即使在此示例中,仍然可以刪除Directory.CreateDirectoryFile.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.

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