要给学校机房作管理软件,98下可以隐藏不被关闭,2000下可以被关闭,怎么才能禁止?

解决方案 »

  1.   

    2000下任务管理器里隐藏不了的,liuyang来看看吧
      

  2.   

    让你的程序无法被关闭  
    九天龙皇
    摘 要:防止程序被关闭
    关键字:关闭
    类 别:系统控制
     
     
    让我们来分析一下,你关闭程序有几种方法:点X,按Alt + F4,从关闭程序对话框中选结束任务,点标题栏中的关闭,点任务中的关闭。我们要做的,就是让X消失,Alr + F4失效,让程序从关闭程序和任务栏中消失,让标题栏上的菜单失效.
       让X消失很easy,把Form的BorderIcons中所有属性都设为Fasle;
            Alt+F4失效:
        把Form的KeyPreview设为True
        然后响应OnKeyDown事件:procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState);begin  if (Key = VK_F4) and   (ssAlt in shift)    then Key := 0;end;        让程序从关闭程序和任务栏中消失:这个技术锦囊中有啊,这个就不写了。
    unit Unit1;interfaceuses  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  StdCtrls, Menus;type  TForm1 = class(TForm)    Label1: TLabel;    Button1: TButton;    Button2: TButton;    MainMenu1: TMainMenu;    N1: TMenuItem;    N2: TMenuItem;    procedure Button2Click(Sender: TObject);    procedure Button1Click(Sender: TObject);    procedure N2Click(Sender: TObject);    procedure FormCreate(Sender: TObject);    procedure FormKeyDown(Sender: TObject; var Key: Word;      Shift: TShiftState);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;   function RegisterServiceProcess(dwProcessID, dwType: Integer):  Integer; stdcall; external 'KERNEL32.DLL';implementation{$R *.DFM}procedure TForm1.Button2Click(Sender: TObject);beginbeep;showmessage('选错了吧,没关系,重选!');end;procedure TForm1.Button1Click(Sender: TObject);beginbeep;showmessage('我就知道!');close;end;procedure TForm1.N2Click(Sender: TObject);beginshowmessage('这是个死缠烂打的程序,你不选yes是不能退出的,嘿嘿')end;CoDelphi.com版权所有,未经允许,不得进行任何形式转载procedure TForm1.FormCreate(Sender: TObject);begin RegisterServiceProcess( GetCurrentProcessID, 1 ); Form1.KeyPreview:=True;FormStyle:=fsStayOnTop;SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState);begin if (Key = VK_F4) and   (ssAlt in shift)    then key:=0;end;end.
    然后你的程序就可以无法关闭了。用这些方法你可以让程序在后台监视..
    在delphi5 for winme 下通过. 
      

  3.   

    如果不要它关闭,也可以,让它永远最小化就可以了,点击它也出不来,你说的功能我都有原码,给个E-MAIL我,我发给你
      

  4.   

    有是这个问题哦:)好吧,这次为了升星,就讲多点了,请各位支持了:)只针对2000以上系统,9X的就别问我了,4年没搞了:)一般有4种方法:1)DLL挂靠大发
    程序改写为DLL结构,挂靠Explorer.exe上运行
    好处:没进程实体,普通进程查看无效
    缺点:可以通过代码叫Explorer.exe Unload你的Dll,呵呵,还有Explorer出错时,会重新启用,那个时候需要重新挂靠你的DLL
    改进:用Debug权限挂靠WinLogon.exe,哈哈,安全系数就高很多,WinLogon死了,你也就死机了LYSoft主页的http://ly.activepower.net/projects/No Ctrl+Alt+Del.rar是DLL挂靠方法的例子,修改就可用2)API Hook大发
    关闭程序的实质是什么?TerminateProcess的API!
    只要你的Application.Title:=‘’就不会出现在任务管理器的第一页
    第二页会出现的,但不怕,我Hook了TerminateProcess就可以保证安全了
    TerminateProcess可以Hook?可以,但Hook了没用,Handle是未知的
    因此实质上要Hook的是OpenProcess,只要是我的进程就拒绝打开
    好处:不怕你见的到,你就是关不了我
    缺点:CMD下的命令行方法Hook不到
    改进:能够Hook系统服务就一定可以,可惜难度大,需要编写驱动LYSoft主页的http://ly.activepower.net/projects/API Hook.rar是API Hook方法的例子,修改就可用3)NT内核修改大发
    修改NT系统内核对象PsLoadedModuleList上的ActiveProcessLink链表就可以在系统上“失踪”了,但实现这个功能需要驱动支持,没驱动的方法只能适合XP/2003,因为Nt5.1以上的ZwSystemDebugControl API才能支持内核访问
    好处:你怎么都见不到进程的
    缺点:难度过大,用内核工具仍然可以看见的,很多RootKit木马就用这个方法的
    改进:几乎是终极大法,没什么别的好方法了。LYSoft主页的http://ly.activepower.net/projects/NTLowLevel.exe是演示程序,不提供代码,涉及技术机密,不便奉告关键代码如下
    function HideProcess: boolean;
    label Err;
    var
      EProcess : DWord;
      hPM, FLink, BLink: Cardinal;
    begin
      Result := false;
      EProcess := GetCurrentEProcess;
      if EProcess < 1 then Exit;
      if not ReadVirtualMemory(EProcess+$88, @FLink, 4) then Exit;
      if not ReadVirtualMemory(EProcess+$8C, @BLink, 4) then Exit;
      if not WriteVirtualMemory(FLink+4, @BLink, 4) then Exit;
      if not WriteVirtualMemory(BLink, @FLink, 4) then Exit;
      Result := true;
    end;不要问为什么了,你需要NTDDK的知识才能明白的:)4)远程线程大发
    没有实体的存在,没进程,没DLL,只有代码
    把代码直接注入进程空间VirtualAllocEx,用CreateRemoteThread运行,
    好处:没可见的实体,隐蔽性最强
    缺点:适合于简单代码,复杂的难以保证其可靠性和稳定性,病毒的最爱
    改进:不需要什么了这个没演示了,呵呵:)
    注入某个进程空间,要涉及到API定位等一系列病毒式操作,在对方的身体运行呀
    简单的代码可以,复杂的功能就很不适合,一般的程序根本就不适合,所以除非写病毒,否则不建议用这样的方法,因为连调试都变得很难这个问题,强烈推荐到FAQ了!!以方便各位有需要的人:)LYSoft http://lysoft.7u7.net
      

  5.   

    有问题的,关闭的那个程序,其正在处理的数据会被丢失,也不见得好用而且要同时关闭几个?容易!
    使用ToolHelp32 API列表进程及其线程,SuspendThread挂起那2个相互检查的进程
    然后逐个TerminateProcess结束任务,嘿嘿