簡體   English   中英

允許用戶刪除我的應用程序正在使用的文件?

[英]Allow User to Delete File In Use By My Application?

我可以允許用戶刪除Windows下我的應用程序正在使用的文件嗎?

在我的方案中,我有一個“快速添加”目錄,該目錄由我的應用程序監視。 當看到新的圖像顯示時,它將創建一個新的幻燈片以自動幻燈片顯示。 我還希望允許我的用戶從“快速添加”目錄中刪除(和/或重命名)文件,並將其從幻燈片放映中刪除。

有沒有一種方法可以標記該文件以通知Windows我可以在應用程序使用它的同時刪除該文件?

有沒有一種方法可以標記該文件以通知Windows我可以在應用程序使用它的同時刪除該文件?

是。 在Win32中,這是dwShareMode傳遞給CreateFile() 這是您希望允許其他進程執行的位域。 您所尋找的位是FILE_SHARE_DELETE ,它允許在打開時進行刪除或重命名。 但是,對於最禮貌的行為,我建議將所有3個文件都包含在內, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE [1]

由於您詢問的是C#而不是Win32,因此在.NET世界中,這些文件包含在FileShare枚舉中,您可以在打開文件時傳遞該枚舉,例如。 File.Open

請注意,當按名稱打開文件時,這些標志不允許您重命名文件的父目錄。 由於內核的限制(無論是在ntfs.sys IIRC中),無論共享如何,都將失敗。


腳注

1:社論評論:遺憾的是,傳遞0 (許多人不加考慮)確實是最小的允許選項,或者更多的人在Windows上編寫代碼時沒有意識到此參數的作用並傳遞了這三個標志。

如果在使用文件的控件上調用Delete()Rename()方法,則可以在刪除或重命名文件之前將其從PictureBox中刪除。

進行多次運算應該不會有太大的問題。 使用控件上的復選框,您只需檢查每個控件以查看該屬性是否為true,然后調用適當的方法。

暫無
暫無

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

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