繁体   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