我使用应用程序兼容性工具包中的“标准用户分析器”进行了说明,它报告说我的应用程序不兼容 UAC,因为:
“DeleteFileA:文件 (\Device\HarddiskVolume1\Documents and Settings\Administrator\Local Settings\Temp\mtgstudio.madExcept) 被拒绝 'DELETE' 访问,错误为 0x5。”
“DeleteFileA:文件 (\Device\HarddiskVolume1\Documents and Settings\Administrator\Local Settings\Temp) 被拒绝‘DELETE’访问,错误为 0x5。”
检查我发现的 madExcept.pas 文件:
function GetTempPath : AnsiString;
var arrCh : array [0..MAX_PATH] of AnsiChar;
begin
if windows.GetTempPathA(MAX_PATH, arrCh) > 0 then begin
result := arrCh;
if result <> '' then begin
CreateDirectoryA(PAnsiChar(result), nil);
if result[Length(result)] <> '\' then
result := result + '\';
result := result + KillExt(ExtractFileName(ModuleName(0))) + '.madExcept';
CreateDirectoryA(PAnsiChar(result), nil);
result := result + '\';
end;
end else
result := '';
end;
有没有一种好方法可以覆盖 madExcept 行为并将临时文件存储在 UAC 允许的位置?