1
저는 Delphi를 사용하여 파이어 버드 데이터베이스의 백업을 수행하는 서비스를 만들었습니다. 기본적으로 서비스는 대상 디렉토리를 가져오고 GBAK를 사용하여 FBK 파일을 만듭니다. "Google 드라이브"디렉토리를 제외한 다른 디렉토리에서도 잘 작동하며 해결 방법을 모르겠습니다. 내가 서비스에서 별도로 GBAK을 실행하면서비스가 폴더에 액세스 할 수 없습니다.
, 그렇게 내가 몇 가지 코드를 여기에
잘못이야 무슨 일이 일어나고 있는지 모르는 일
if not FileExists(GetEnvironmentVariable('ProgramData') + '\MY\' + Nombre) then
try
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do
begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := 0;
lpFile := PWIDEChar(RegQueryStringValue('SOFTWARE\Firebird Project\Firebird Server\Instances', 'DefaultInstance') + 'bin\gbak.exe');
nShow := SW_HIDE;
lpParameters := PWIDEChar('-v -t -user SYSDBA -password "masterkey" MY ' + '"' + GetEnvironmentVariable('ProgramData') + '\MY\' + Nombre + '"');
end;
if ShellExecuteEx(@SEInfo) then
begin
repeat
GetExitCodeProcess(SEInfo.hProcess, ExitCD);
until (ExitCD <> STILL_ACTIVE) or (Terminated);
end;
except
on e: Exception do
begin
if GetLastError <= 32 then
begin
case GetLastError of
0, se_err_OOM:
InsertError('OutMem', error_1);
error_File_Not_Found:
InsertError('GMiss', error_2);
error_Path_Not_Found:
InsertError('Path', error_3);
error_Bad_Format:
InsertError('GBreak', error_4);
se_err_AccessDenied:
InsertError('AccX', error_5);
se_err_NoAssoc, se_err_AssocIncomplete:
InsertError('BadFile', error_6);
se_err_DDEBusy, se_err_DDEFail, se_err_DDETimeOut:
InsertError('DDE', error_7);
se_err_Share:
InsertError('Share', error_8);
else
InsertError('Unkn', error_9);
end;
MYBackup.Status := csStopped;
Exit;
end
else
begin
InsertError(e.ClassName, e.Message);
MYBackup.Status := csStopped;
Exit;
end;
end;
end;
어떤 오류가 발생합니까? – whosrdaddy
아무 것도 작동하지 않는 것 같습니다. –
어떤 경로가 작동하며 어떤 경로가 작동하지 않습니까? –