应用程序从任务管理器中消失

来源:互联网 发布:政务数据目录 编辑:程序博客网 时间:2024/04/30 14:52
[问题]
通常我们按下CTRL+ATL+DEL组合键后,可以看到正在运行的程序或者进程,有没有办法让程序从CTRL+ATL+DEL消失掉呢?也就是说让正在运行的程序对CTRL+ATL+DEL不可见。
[解答]
答案是肯定的,办法如下:
使用Win32 API 函数RegisterServiceProcess,但是这个API函数的文档你是很难找到的。这里我们要用一下汇编。

#include <windows.h>

HINSTANCE hLibrary;
void *regproc;

void CADInit(void);
void HideApp(void);
void ShowApp(void);
void CADClean(void);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
  CADInit(); //加载 DLL 并创建一指向它指针
  HideApp(); //隐藏程序
  //ShowApp(); //显示程序

  //其他处理或调用
  
  CADClean(); //卸载 DLL
  return 0; //retrun 0 因为没有进入消息循环
}

void CADInit(void)
{
  //加载 kernel32.dll
  hLibrary = LoadLibrary("kernel32.dll");
  //获取函数RegisterServiceProcess的地址
  regproc = GetProcAddress(hLibrary, "RegisterServiceProcess");
}

void HideApp(void)
{
  //实现程序的隐藏
  __asm
  {
   push 1
   push 0
   call regproc
  }
  return;
}

void ShowApp(void)
{
  //恢复状态
  __asm
  {
      push 0
      push 0
      call regproc
  }
  return;
}

void CADClean(void)
{
  //卸载 DLL
  FreeLibrary(hLibrary);
  return;
}
本程序在W2K和Win9x测试通过。  
原创粉丝点击