我是否可以允许用户删除我的应用程序正在使用的Windows文件?
在我的场景中,我有一个由我的应用程序监控的“快速添加”目录。当它看到一个新图像显示时,它会创建一个新幻灯片以在自动幻灯片放映中显示。我还想允许我的用户从我的“快速添加”目录中删除(和/或重命名)文件,并将其从幻灯片放映中删除。
有没有办法可以标记通知Windows的文件我可以在我的应用程序使用它时删除文件?
答案 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,然后调用相应的方法。