Delphi Can';不要使用DeleteFile(),除非以管理员身份运行程序,即使具有完全控制权限

Delphi Can';不要使用DeleteFile(),除非以管理员身份运行程序,即使具有完全控制权限,delphi,Delphi,我们的计划是这样的: C:\Main C:\Main\Utils C:\Main\App.exe 如果我不以管理员身份运行App.exe,它将永远不会删除该文件。但是,当我以管理员身份运行它时,它会很好地删除文件 所有人的权限都设置为完全控制 我知道这可能不是一个Delphi问题,因为它大量处理Windows UAC,但当我们的程序在Delphi5中运行时,这段代码运行良好,现在我们正在Delphi10中构建它 使用tpinter对象将上述.bmp插入到打印页面,我们也遇到了类似的问题,但我相信

我们的计划是这样的:

C:\Main C:\Main\Utils C:\Main\App.exe 如果我不以管理员身份运行App.exe,它将永远不会删除该文件。但是,当我以管理员身份运行它时,它会很好地删除文件

所有人的权限都设置为完全控制

我知道这可能不是一个Delphi问题,因为它大量处理Windows UAC,但当我们的程序在Delphi5中运行时,这段代码运行良好,现在我们正在Delphi10中构建它


使用
tpinter
对象将上述
.bmp
插入到打印页面,我们也遇到了类似的问题,但我相信
DeleteFile
的问题将解决这些问题。

使用
DeleteFile()
之后,您可以使用
GetLastError()
获取出错的内容并使用
CheckOSError()
触发异常。一旦您知道它失败的原因,您就可以进一步排除故障

if not deletefile(bmp) then begin
   CheckOSError(GetLastError);
end;

如果在
bmp
的值中包含完整路径,会有什么区别吗?我不明白你为什么不这样做。我要尝试的第一件事可能是在
SaveToFile
DeleteFile
之间添加
Sleep(1000)
。然后,如果这有什么不同的话,我可能会责怪杀毒软件,然后继续前进但是,我发现很难确切解释为什么D5和D10得到不同的结果使用,但使用起来更简单