允许用户删除我的应用程序使用的文件?

时间:2013-01-19 00:41:33

标签: c# wpf windows filesystems

我是否可以允许用户删除我的应用程序正在使用的Windows文件?

在我的场景中,我有一个由我的应用程序监控的“快速添加”目录。当它看到一个新图像显示时,它会创建一个新幻灯片以在自动幻灯片放映中显示。我还想允许我的用户从我的“快速添加”目录中删除(和/或重命名)文件,并将其从幻灯片放映中删除。

有没有办法可以标记通知Windows的文件我可以在我的应用程序使用它时删除文件?

2 个答案:

答案 0 :(得分:5)

  

有没有办法可以标记通知Windows的文件我可以在我的应用程序使用它时删除文件?

是。在Win32中,dwShareMode传递给CreateFile()。这是您希望允许其他进程执行的操作的位域。您要查找的位是FILE_SHARE_DELETE,允许在打开时删除或重命名。但是,对于最礼貌的行为,我建议包括所有3,FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE [1]

由于您在询问C#而不是Win32,因此在.NET世界中,这些包含在FileShare枚举中,您可以在打开文件时传递这些枚举,例如:在File.Open

请注意,这些标志不允许您在按名称打开文件的父目录时重命名该文件。由于内核的限制(无论是技术上在ntfs.sys IIRC中),无论共享如何都会失败。


脚注

1:编辑评论:遗憾的是,传递0(许多人不假思索)恰好是最不宽容的选项,或者更多人在Windows上编写代码并没有意识到这个参数的作用是什么,并传递这三个标志。

答案 1 :(得分:0)

如果您在使用该文件的控件上调用Delete()Rename()方法,则可以在删除或重命名文件之前将其从PictureBox中删除。

做倍数时不应该有太多问题。使用Control上的Checkbox,您只需检查每个Control以查看该属性是否为true,然后调用相应的方法。

相关问题