我已经试过Hook CreateProcessA(),CreateProcessW(),ShellExecuteA(),ShellExecuteW()这些api函数,只能拦截到很少的一些运行程序。请做过这方面的程序的高手指点一二,不必给代码,给点提示即可。解决此问题,立刻结贴。

解决方案 »

  1.   

    得到那个你想关闭的程序的指针,向它发送WM_CLOSE不知道行不行?
      

  2.   

    这样应该是可以实现的,不过我想从一开始就禁止它运行。估计设置.exe类型的文件关联应该是可以,但是杀毒软件会自动恢复。唉……
      

  3.   

    据说可以通过修改注册表实现(《注册表终极修改2000例》山东电子音像出版社 p204)HKCU\Software\Microsoft\windows\CurrentVersion\Policies\Explorer我也正在测试
      

  4.   

    是不是可以做一个程序在计算机启动时运行,监控进程,一旦有的把他KILL掉!!哈!学习!!!!
      

  5.   

    to iicup(双杯献酒):
       有道理,可以在不允许运行的时候就把那个文件给删掉,允许运行的时候再给他弄回来,哈哈。to  guangsan(丑草):   呵呵,我记得以前的超级兔子里面有这个功能,就是不知道是怎么改的。to bnlovebn(兵兵):   嗯,我也想过,不过那样也太不友好了,别弄不好引起系统崩溃才好。我想了一个办法,是受到超级兔子魔法设置里面的文件保护的启发,它里面创建了一个进程,然后在那个进程里面以独占方式打开想要保护的文件,这样别的程序就没办法打开了,它的缺点是它的那个保护文件的进程是以应用程序的方式运行的,用任务管理器一下就结束了。我做的时候会把那个保护的代码放到dll里面,然后使用远端线程的方法将代码注入Explorer.exe或者winlogon.exe中运行,大概就可以了。期待更好的解决方案哦 :)
      

  6.   

    最好的方案莫过于利用文件过滤系统,我也有这方面的需求,若你有意,留个邮箱上来,给你filemon的源代码,研究上半月二十天的,当然什么都明白了。只恨腾不出手来。
      

  7.   

    进程监听,一有这个进程开始,就KILL 他
      

  8.   

    如果要求不是很严格的话,用CBT钩子就可以啦!

    case DLL_PROCESS_ATTACH:
                          if(...)
                          {
                              TerminateProcess(...);//退出的方法很多,还没测试!
                          }
                          break;这可是最简单的方法,楼主记得多给点分哦 :)
      

  9.   

    还有一种方法,你可以参考PE文件的资料,不允许的时候,修改那个EXE文件,添加一个节进去,把你的代码写成:运行的时候,就直接退出。允许的时候,就恢复那个EXE文件。
      

  10.   

    如果是通过程序名来判断的话就比较好解决HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options下建立一个以要禁用的程序名命名的子项,如:test.exe
    在该子项下建立一个名为Debugger的键,值可以是一个替代的exe文件名,如:cmd.exe那么系统在运行程序时会先判断该EXE文件名是不是test.exe,如果是的话就不运行它,而是运行cmd.exe