如何删除cpp win32中其他进程当前正在使用的文件?

问题描述 投票:0回答:1

卸载我的msi应用程序时,调用DeleteFile()函数后,Program Data文件夹中的日志文件(.txt)没有被删除。通过使用 GetErrorCode() 我可以检查其返回的错误代码 32,这意味着该文件正在使用中。有没有办法在卸载时删除这些日志文件?理论或来源 - 任何形式的帮助将不胜感激。

我尝试使用下面的代码,但它不起作用。即使 fclose() 操作也没有产生任何积极的结果。

SHFILEOPSTRUCT file_op = {
        NULL,
        FO_DELETE,
        dir,
        "",
        FOF_NOCONFIRMATION |
        FOF_NOERRORUI |
        FOF_SILENT,
        false,
        0,
        "" };
    SHFileOperation(&file_op);
c++ winapi wix windows-installer delete-file
1个回答
0
投票

您无法删除其他进程当前正在使用的文件。您可以尝试将

MoveFileEx
MOVEFILE_DELAY_UNTIL_REBOOT flag
一起使用。

有关更多详细信息,我建议您可以参考以下主题: 如何强制删除C/C++中锁定的文件?

© www.soinside.com 2019 - 2024. All rights reserved.