Delphi MoveFileEx在重新启动后不删除文件
有人可以解释为什么在以下代码中,重启后不删除文件?谢谢Delphi MoveFileEx在重新启动后不删除文件,delphi,winapi,delphi-10.3-rio,movefileex,Delphi,Winapi,Delphi 10.3 Rio,Movefileex,有人可以解释为什么在以下代码中,重启后不删除文件?谢谢 program Project1; {$APPTYPE CONSOLE} {$R *.res} uses Winapi.Windows, System.SysUtils; var FileName: array[0..128] of Char; FileNameZip: string; begin try GetModuleFileName(HInstance, FileName, 128);
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
Winapi.Windows,
System.SysUtils;
var
FileName: array[0..128] of Char;
FileNameZip: string;
begin
try
GetModuleFileName(HInstance, FileName, 128);
FileNameZip := IncludeTrailingPathDelimiter(GetEnvironmentVariable('USERPROFILE') + '\Downloads') + ChangeFileExt(ExtractFilename(FileName), '.zip');
Writeln(FileName);
Writeln(FileNameZip);
if not MoveFileEx(FileName, nil, MOVEFILE_DELAY_UNTIL_REBOOT) then
SysErrorMessage(GetLastError);
if not MoveFileEx(PWideChar(FileNameZip), nil, MOVEFILE_DELAY_UNTIL_REBOOT) then
SysErrorMessage(GetLastError);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
Readln;
end.
您是否已在HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations检查注册表中是否有为文件创建的条目?获取用户
下载文件夹路径的正确方法是使用SHGetKnownFolderPath(FOLDERID\u下载)
。另外,您的文件名
缓冲区太小,它应该是最大路径
(260)个字符的最小值。我无法重现此问题,因为它适合我。请检查MoveFileEx
的操作是否成功?如果失败,请共享错误代码。@RitaHan MSFT,错误\访问\被拒绝,我应该以管理员身份执行。现在开始工作了!非常感谢。您是否已检查HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations注册表中是否有为文件创建的条目?获取用户下载
文件夹路径的正确方法是使用SHGetKnownFolderPath(FOLDERID\u下载)
。另外,您的文件名
缓冲区太小,它应该是最大路径
(260)个字符的最小值。我无法重现此问题,因为它适合我。请检查MoveFileEx
的操作是否成功?如果失败,请共享错误代码。@RitaHan MSFT,错误\访问\被拒绝,我应该以管理员身份执行。现在开始工作了!非常感谢你。