如题

解决方案 »

  1.   

    1.令你的进程在任务管理器中看不到
    2.虽然在任务管理器里面能看到,也能结束,但被kill后又能自动启动起来.
      

  2.   

    但即使真的看不到,也有工具能杀掉隐藏的进程的.隐藏进程可以使用Rootkit技术,你还可以把自己的进程挂接到其它进程上--做的象病毒一样.
      

  3.   

    不是的 ,小弟目前有东西运行,但是时候机器要被关闭,现在使用SystemEvents事件取消了关机,但是到取消这一步我的进程已经去了...
      

  4.   

    SessionEnding是到所有应用程序都关掉才得到消息的,所以我这时候可以阻止关机,但是不能阻止应用程序被关闭
      

  5.   

    楼主是不是要禁止关机呢?
    private const int WM_QUERYENDSESSION=0x0011;
    protected override void WndProc(ref Message m)
    {
    int i=0;
    switch(m.Msg)
    {
    case WM_QUERYENDSESSION:
    m.Result=(IntPtr)i;
    break;
    default:
    base.WndProc(ref m);
    break;
    }

    }
    不大理解楼主的意思,如果禁止别人关自己的进程,那方法有几种:
    1。用计时器不停删除任务管理器中的列表项,以达到隐藏程序(其实你的程序还在运行,只不过不出现在任务管理器列表中)
    2。参考:http://www.codeproject.com/useritems/GINA_SPY.asp
    3。线程注入,这用C#不容易实现
    4。毒一点,用注册表,不让用任务管理器:
    Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
    "DisableTaskMgr"=dword:00000001
    当然也可以用findwindow得到任务管理器窗口句柄,SendMessage来关闭它
      

  6.   

    你做个WINDOWS服务开机启服务,包你次次都能运行
      

  7.   

    如果是别的进程要关机,操作系统会向每个进程发WM_QUERYENDSESSION的消息,只要在你自己的程序中阻止关机就行了,就象我上面的代码,如果是别的进程造成假死,那用SendMessageTimeout试试
      

  8.   

    呵呵,关闭进程用到哪个函数,你就hook哪个函数,这是最根本的解决办法