首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

TerminateProcess能kill进程的范围有关问题

2012-03-09 
TerminateProcess能kill进程的范围问题 - C++ Builder / Windows SDK/API在使用TerminateProcess时候发现

TerminateProcess能kill进程的范围问题 - C++ Builder / Windows SDK/API
在使用TerminateProcess时候发现有些进程是不能kill的。
我有自己写的一个服务,在资源任务管理器(用户名属于system)中是能结束的,但在程序中TerminateProcess是结束不了的,因为OpenProcess的时候获得的handle都是null。
所以我想是不是由于OpenProcess只能获得有窗体的进程的handle,或者是只要资源管理器中用户名为system的就不能获得,因而无法结束进程。

另外有没其他方法解决这样的问题啊?怎样才能达到用命令ntsd进行kill的效果呢???

[解决办法]
好像需要提升权限,试试这段代码

HANDLE hToken;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken))
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount=1;
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid);
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
CloseHandle(hToken);
}

热点排行