通过权限设置禁止用户在任务管理器中杀掉我们的进程

原创 2006年06月23日 15:39:00

通过权限设置禁止用户在任务管理器中杀掉我们的进程

      以下代码仅供学习,俺不能保证代码完全正确,呵呵。代码中有用到的模板类CLocalMemoryT在后面会介绍!
要说明的是,在XP下无效,2003还没试过!而且,即使在2000下也不是完全杀不死的,ntsd命令就可以杀死
这类进程。

#include "aclapi.h"
#include "atlbase.h"
BOOL DisableTerminateProcess(void)

 CHandle token ;
 if ( ::OpenProcessToken( ::GetCurrentProcess(),
                             TOKEN_READ | TOKEN_WRITE ,
                             &token.m_h) )
 {
  try
  {

   CLocalMemoryT<PTOKEN_USER> tokenUser(Helpers::GetTokenInformation<TOKEN_USER>(token,TokenUser));
   
   DWORD dwAclSize = sizeof(ACL) +  
         2*(sizeof(ACCESS_ALLOWED_ACE)-sizeof(DWORD))+  
         GetLengthSid(tokenUser->User.Sid) ;
           
   DWORD AccessMask = PROCESS_ALL_ACCESS ;
   AccessMask &= ~PROCESS_TERMINATE ;

   CLocalMemoryT<PACL> pNewDacl ( dwAclSize ) ;   
   if( InitializeAcl(pNewDacl.m_ptr,dwAclSize,ACL_REVISION) &&  
    AddAccessAllowedAce(pNewDacl.m_ptr,  
         ACL_REVISION,  
         AccessMask ,  
         tokenUser->User.Sid ) )
                 
   {
    if( SetSecurityInfo( ::GetCurrentProcess() , SE_KERNEL_OBJECT , OWNER_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION ,
          tokenUser->User.Sid , NULL , pNewDacl.m_ptr , NULL ) == S_OK )
    {     
     return TRUE ;
    }

   }
  }
  catch (HRESULT error)
  {
  }
 }
 
 return FALSE;
}


以上的代码在  window2000+vc.net 上运行测试通过!

上面用到两个类 ,一个是CHandle , 在atlbase.h里定义(ATL3.0里没有),
另一个CLocalMemoryT,和 Helper ,都可以在下面地址找到
http://www.microsoft.com/china/MSDN/library/Security/default.mspx?mfr=true

C# 保护进程不被结束(源代码)防任务管理器结束进程

闲来无事,英语又学的太痛苦。看到我妈妈电脑开起在,就坐上去看看新闻,听听音乐。哎,突然间,老毛病又烦了,想起原来一直有个编程的问题没有解决——禁止别人用任务管理器,结束自己的程序进程(.NET程序)。...
  • qq798833488
  • qq798833488
  • 2016年11月16日 21:42
  • 3247

VC禁止在任务管理器中结束本进程

转自百度空间:http://hi.baidu.com/175943462/item/657905e13b73b70b8d3ea8bb 一提到进程保护特别是在Windows...
  • dingxz105090
  • dingxz105090
  • 2014年05月28日 19:22
  • 1262

windows下面hook系统api实现禁止任务管理器关闭程序

为了保护我们的进程不被人随便强制关闭,我们需要一种机制来实现,网上大概有几种方式:1.写一个驱动程序,在驱动程序里面hook系统的api来实现,例如ssdt方式,等等。2.就是在应用层挂钩系统api,...
  • nanjun520
  • nanjun520
  • 2015年07月28日 18:15
  • 2246

C#自我总结: 阻止打开任务管理器(两种方法,也适用于杀掉进程)

有不合理的地方麻烦指出,谢谢! 作者:(⊙_⊙)★燚♂靈惢★空间 出处:http://515847999.qzone.qq.com CSDN个人主页:http://hi.csdn.net/q...
  • qq515847999
  • qq515847999
  • 2012年01月23日 01:36
  • 966

VB任务管理器,带结束进程功能,附提升权限代码

  • 2009年07月17日 09:50
  • 53KB
  • 下载

“任务管理器”中“进程”各个选项卡的含义

  “任务管理器”中“进程”各个选项卡的含义?           总结PID(进程标识符)唯一标识所运行进程的编号。           ...
  • jianyi7659
  • jianyi7659
  • 2011年03月19日 11:08
  • 997

c# 隐藏winform程序在任务管理器中进程

1)Win32API.cs using System; using System.Collections.Generic; using System.Text; using System.Ru...
  • yddongzs
  • yddongzs
  • 2012年04月23日 20:21
  • 651

任务管理器进程中多个chrome.exe的问题

偶然发现任务管理器进程中有多个chrome.exe进程,很奇怪自己只打开了一次浏览器,为什么会有多个?! 上网一查才发现:原来使用Google浏览器Google Chrome每开一个新标签页面,都会...
  • qiuyeting
  • qiuyeting
  • 2012年03月23日 13:04
  • 22714

隐藏进程(在任务管理器中看不到),vc6.0

////////////////////////////////////////////////////////////////////////////////////////////////////...
  • yatere
  • yatere
  • 2011年06月07日 12:10
  • 835

MFC隐藏进程自身(任务管理器不可见,wSysCheck等工具可见)

MFC隐藏进程 只要把cpp和h加入工程,include就可以了。 代码地址: //------------------HideProcess.h-----------------...
  • u011672712
  • u011672712
  • 2016年06月06日 12:19
  • 1690
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过权限设置禁止用户在任务管理器中杀掉我们的进程
举报原因:
原因补充:

(最多只允许输入30个字)