如何使程序不被強行關閉?    大家知道,瑞星電腦監控的進程RavMonD.exe 雖然出現在任務任務管理器中的"進程"中,但當你強行關閉它時,系統就不允許,系統提示"存取被譽爲拒絕",效果就像你去關閉Windwos核心進程一樣.    那麽,請問在Delphi中如何實現此技術呢?有朋友可能會說,不讓用戶運行“任務管理器”就是,亮是一種方法,但遇到一些必須任務管理器干涉的進程時,它的不足處處就表現出來了。
    請各位大俠不惜指教!分數不夠,下次一定再補給你!

解决方案 »

  1.   

    补充一下楼上的:
    处理WM_QUERYENDSESSION消息RegisterServiceProcess RegisterServiceProcess(GetCurrentProcessID, 1);
    把当前的程序注册为服务程序。WinNT中服务程序是在后台运行的,不会出现Procedure HideAppInTask;//Ctrl+Alt+Del时候隐藏
    begin
      RegisterServiceProcess(GetCurrentProcessID, 1);
    end;
    Procedure ShowAppInTask ;
    begin
      RegisterServiceProcess(GetCurrentProcessID, 0);
    end;
      

  2.   

    To dxxb(天下无雪):你所说的方法只适用于Win 9X, 在NT/2K/XP下已经没有RegisterServiceProcess这个API了。
      

  3.   

    晕倒 上面的方法只能用在Win9X中~~~~~~~~我有一个简单的办法,但是除非楼主给1000分,否则是不公布的~~~~~~~~~ 商业秘密 哈哈
      

  4.   

    我是要在2000/xp下使用.
     go_all_out(hianxqing) 你能否說詳細些?或者給我源碼? Email:  [email protected]
      

  5.   

    RavMonD.exe是被注册成了服务, 要停止它, 只要将RsRavMon Service这个服务停止就行了。楼主如果想不注册成服务,而在任务管理器不显示或者不能被停止的话,需要用其他的办法,CSDN上有过相关的贴子,你查找一下吧。
      

  6.   

    邮件已经发送, jozosoft(水灵灵的乌兰诺娃)请注意查收
      

  7.   

    go_all_out(hianxqing) 先生:
      謝謝你的關心!
      請解決如下問題:1. .dll文件中 Map file 是作什麽用的?爲什麽要建立這種文件?
    2.Result:=$FFFFFFFF; 中"$FFFFFFFF" 是什麽意思?
    3、能請您詳細地說說.dll文件中的思路否?
      因爲我對這些知識了解得不多,問得很“菜”的地方但請諒解!
      
      您可在csdn回復我或EMail給我。到時結分時您是大股東!
      
      

  8.   

    100分也算重赏,100RMB都不告诉你
      

  9.   


    2.Result:=$FFFFFFFF;$开头的表示是十六进制的常量,在这里就是二进制的32位1了 :)
      

  10.   

    对不起,之前的dll文件夹,缺少文件我现在已经重新发了一份,你再看一下有关代码的问题,对不起,很多地方我也不理解,我说了我是直接用人家的代码的,所以你如果碰到什么问题就自己找找资料吧,有关hook api的,再次抱歉,我不做事后解答了!
      

  11.   

    ThenLong(完美组合=Delphi/C++) :
    請詳述之
      

  12.   

    超级简单;你用apiHook ,在TerminateProcess函数中检查你的进程句柄,如果相等则拒绝终止;关于演示,你可以找delphi 的madCollection 组件,它自己带的demo就有该功能。