如何删除(或隐藏)正在运行的EXE文件,而又不影响它的正常运行呢(用CreateFile方法)(50分)

R

rgzy

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
hFile:THandle;
begin
hFile := CreateFile('a.exe',GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_FLAG_DELETE_ON_CLOSE,0);
WinExec('a.exe',SW_SHOW);
CloseHandle(hFile);
end;
运行程序,点击按钮,然后你会发现a.exe在硬盘上消失了,但是a.exe还在运行!
以上是JINTAO网站上的一段源码,但我在XP+D6上却不能做到,报"不能打开文件"(当然我在程序的同
目录里也放了一个可运行的程序,改名为a.exe)
请教高手们帮助!!谢谢
 
可以使用
MoveFileEx(lpFileName,NULL,MOVEFILE_DELAY_UNTIL_REBOOT);
 
MoveFileEx(lpFileName,NULL,MOVEFILE_DELAY_UNTIL_REBOOT);
我不太会用,试了一下,没有效果呀,你能不能照着上面的代码写个完整的给我看一下,
谢谢!!
 
我在XP+D5下试了没问题啊,是你的系统有问题吧?
 
to 教父
请问你是用的CreatFlie还是MoveFileEx,我用的是D6+XP
 
CreateFile,就是你给出的那段代码,而且我给朋友测试,他也没有问题,他是XP+D6.
 
TO 教夫
我重新换了一个a.exe程序,发现可以打开了,但却依然可以在目录里看到它,并没有被删除
或隐藏.你那边a.exe确实被删除了吗
 
确实删除了,我换了好几个程序试,都删除了。
 
顶部