如何清除同一Windows进程已经打开的日志文件的内容?

时间:2014-05-27 16:35:57

标签: winapi file-io process

我在另一个DLL中的同一进程中有一些第三方代码没有来源打开一个打开的日志文件:

CreateFile(szFile, GENERIC_WRITE,
         FILE_SHARE_READ,
         NULL, OPEN_ALWAYS,
         FILE_ATTRIBUTE_NORMAL,
         NULL);

有什么办法可以在同一个进程中清除这个日志文件吗?使用相同的参数调用CreateFile显然会失败,因为我正在请求写访问权,并且该文件只有FILE_SHARE_READ。

是否有办法获取原始句柄而无需管理员枚举本文中讨论的系统句柄http://forum.sysinternals.com/topic18892.html

1 个答案:

答案 0 :(得分:2)

如果DLL未提供FILE_SHARE_WRITE访问权限,则无法修改该文件,其中包括使用SetEndOfFile()截断文件。所以除非你修改DLL,否则你运气不好。