2011-10-15 4 views
5

지연된 MoveFileEx 작업을 취소하는 방법?

아래 명령을 사용하여 컴퓨터를 재부팅 한 후 일부 파일을 삭제합니다.

MoveFileEx(PChar(File_Address), Nil, MOVEFILE_DELAY_UNTIL_REBOOT); 

이 명령의 실행을 취소하고 재부팅 후 파일을 삭제하지 못하게하려면 어떻게해야합니까?

+2

이렇게하는 방법은 지원되지 않습니다. 이 요청을 주도하는 것은 무엇입니까? –

+2

가장 쉬운 방법은 'MoveFileEx'를 호출하여 파일을 삭제하기를 원할 때까지 처음부터 삭제하는 것입니다. –

답변

13

이렇게 삭제 대기중인 파일은 HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations 아래의 레지스트리에 저장됩니다. 파일을 삭제하지 못하도록 항목을 삭제할 수 있습니다. 나는 이것에 대한 API 함수를 찾을 수 없었다.

+4

+1. Delphi의 TRegistry 클래스 또는 API를 사용하여 해당 레지스트리 키에서 항목을 삭제할 수 있지만 Vista 이상에서는 관리자 권한으로 로그인해야합니다 (일반 사용자는 HKLM에서 쓰기/삭제할 수 없음) . 물론 더 나은 해결책은 파일을 삭제하기를 원할 때까지는 처음부터 항목을 만들지 않는 것입니다. :) –

0

나는 당신이 (아직 삭제되지 않았기 때문에) 파일을 복사 한 다음

MoveFileEx(copy_of_file, original_file, MOVEFILE_DELAY_UNTIL_REBOOT) 

가 재부팅하는 동안 다시 제자리에 넣어 사용할 수있는 것 같아요.

Ken White는 지적했듯이, 처음에는 이런 상황을 피하는 것이 훨씬 더 낫습니다.

+0

문서화 된 [참으로] (http://msdn.microsoft.com/en-us/library/Aa365240.aspx)입니다. _ "이동 및 삭제 작업은 부팅 응용 프로그램에서 지정한 순서와 동일한 순서로 수행됩니다."_ – CodeCaster

+0

@CodeCaster, 감사합니다. 그에 따라 편집했습니다. –

관련 문제