windows – 删除在同一进程中为独占访问而打开的文件
我的
Windows程序通过目录/文件接口从另一个程序接收信息.
这是其他程序将文件放入特殊目录.我的程序定期扫描目录,查找文件,进程然后删除它们. 我使用CreateFile()函数打开这样的文件.为了确保其他程序已完成写入文件并关闭它,我将dwShareMode参数设置为0.如果CreateFile因共享错误而失败,我只是跳过该文件直到下一次尝试. 问题是当我的程序打开文件时,DeleteFile()失败并出现ERROR_SHARING_VIOLATION错误. 我可以在删除它之前关闭文件,但我想避免在删除文件之前其他程序打开文件的可能性. 我用这段代码打开文件 CreateFile(filePath,DELETE|FILE_READ_DATA,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL) 是否有可能实现我想要的:打开文件然后删除它,以便其他程序不会干涉打开和删除文件.
在
FILE_SHARE_DELETE中传递dwShareMode.请注意,这仍然允许其他应用程序(以及您自己的应用程序)在您读取文件时调用
DeleteFile(),但根据DeleteFile()的文档,在您调用CloseHandle()关闭读取之前,它不会被删除处理.
只要您未分别指定FILE_SHARE_READ或FILE_SHARE_WRITE,其他应用程序将无法读取或写入文件.虽然使用FILE_SHARE_DELETE然后可以移动文件,但那就是它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2008 – 如何在不使用chkdsk脱机的情况下保
- xaml – 如何检测ListView向上或向下滚动
- Win10 JDK 环境变量配置
- windows-8 – 增加Win8热角的大小?
- windows – MS.Internal.XcpImports.MethodEx(IntPtr ptr,S
- windows-server-2008 – 如何从自己的计算机上锁定远程用户
- windows-server-2012-r2 – 如何将FreeNAS设置为Windows群集
- windows-7-x64 – 如何将TortoiseGit设置从一台计算机复制到
- Windows Server 2016-OU组织单位日常操作
- Windows – PowerShell脚本自动安装IIS 7及更高版本