我有一个Windows服务可以更新我们的产品。它将产品文件复制到一个临时目录,通常是“C:\Windows\Temp”,修补二进制文件,然后使用MoveFileEx在重新启动时将文件复制回安装目录,通常是“C:\ProgramFiles\Product””。安装目录中的文件从父文件夹继承它们的安全属性。在复制、打补丁和重启后,安装目录中的文件缺少一些ACL。具体来说,这些文件不再具有用户组的ACL,因此用户在重新启动后无法再运行该程序。谁能解释一下这是怎么回事?似乎从安装目录复制到临时目录,文件继承了临时目录的ACL。但是,在MoveFileEx/Reboot上,文件仅继承安装目录和临
我注意到在Vista上写入文件、关闭文件并将其移动到目标位置随机失败。具体来说,MoveFileEx()会无缘无故地返回ERROR_ACCESS_DENIED。至少在VistaSP1(32位)上会发生这种情况。在XPSP3上不会发生。找到thisthread在互联网上关于完全相同的问题,没有真正的解决方案。到目前为止,错误似乎是由Vista的搜索索引器引起的,请参见下文。给出的代码示例足以重现问题。我也把它粘贴在这里:#include#include#includebooltest(){unsignedcharbuf[]={0x00,0x11,0x22,0x33,0x44,0x55,0
重启机器后,我使用下面的命令删除一些文件:MoveFileEx(PChar(File_Address),Nil,MOVEFILE_DELAY_UNTIL_REBOOT);如何取消执行此命令并防止文件在重启后被删除? 最佳答案 您以这种方式排队等待删除的文件位于HKLM\System\CurrentControlSet\Control\SessionManager\PendingFileRenameOperations下的注册表中。也许您可以从那里删除条目,以防止文件被删除。我找不到用于此的API函数。