通过权限设置禁止用户在任务管理器中杀掉我们的进程
来源:互联网 发布:dnsmasq windows 编辑:程序博客网 时间:2024/04/30 10:57
通过权限设置禁止用户在任务管理器中杀掉我们的进程
以下代码仅供学习,俺不能保证代码完全正确,呵呵。代码中有用到的模板类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
- 通过权限设置禁止用户在任务管理器中杀掉我们的进程
- 如何禁止用户通过任务管理器终止进程的一种方法(Win2000/xp)
- [转]如何禁止用户通过任务管理器终止进程的一种方法(Win2000/xp)
- 如何禁止用户通过任务管理器终止进程的一种方法(Win2000/xp)
- 杀掉任务管理器杀不掉的进程
- 禁止用户在任务管理器中停止服务
- VC禁止在任务管理器中结束本进程
- VC禁止在任务管理器中结束本进程
- 杀掉任务管理器杀不了的进程 ntsd -c q -p
- 设置程序在任务管理器隐藏,在进程可见
- 如何禁止任何人杀掉我的进程?
- 用vb在 XP/2K 任务管理器的进程列表中隐藏当前进程
- 在 XP/2K 任务管理器的进程列表中隐藏当前进程
- vb中如何在任务管理器里面隐藏应用程序进程
- vb中如何在任务管理器里面隐藏应用程序进程
- c# 隐藏winform程序在任务管理器中进程
- c# 隐藏winform程序在任务管理器中进程
- C++MFC运行的程序不在任务管理器的应用程序显示但是在进程中显示
- 利用SEH异常清硬件断点
- 支持圈子建设,我也讨论一下系统整合
- 容器的秘密——进程
- indexOf 方法
- 说事
- 通过权限设置禁止用户在任务管理器中杀掉我们的进程
- System Tray Icons
- VC设计分割视图通用创建框架
- 简单技巧
- 背影
- 得到某節點下的所有節點
- 24点游戏代码
- 不用其他工具,和流氓软件说NO
- 正则表达式在网络编程中的运用