词条 | NtTerminateProcess |
释义 | NtTerminateProcess:这是一个Windows的关闭程序的函数,级别属于内核级,大多数的程序都使用这个函数来实现关闭程序 也许你使用的是TerminateProcess,但是TerminateProcess是通过调用NtTerminateProcess来实现关闭程序的 函数原型:C/C++:NtTerminateProcess( IN HANDLE ProcessHandle OPTIONAL, IN NTSTATUS ExitStatus); VB:Declare Function NtTerminateProcess Lib "ntdll" (ByVal hProc As Long, ByVal ExitCode As Long) As Long 参数意义:ProcessHandle : 进程的句柄,要用OpenProcess来获得 ExitStatus:退出代码 函数之间的调用:TerminateProcess ->NtTerminateProcess ->ZwTerminateProcess 有时候,TerminateProcess 不能完全地结束一个进程,但是NtTerminateProcess 可以,ZwTerminateProcess 是基于内核驱动来关闭进程的. C++的一个简单示例:#include <windows.h> #include <stdio.h> typedef DWORD (__stdcall *NtTerminateProcess)(HANDLE,UINT); NtTerminateProcess fNtTerminateProcess=NULL; BOOL ExitProc(HANDLE hProc) { HINSTANCE hModule=LoadLibrary("ntdll.dll"); //加载 ntdll.dll if(hModule!=0) { fNtTerminateProcess=(NtTerminateProcess)GetProcAddress(hModule,"NtTerminateProcess"); //加载外部DLL函数 HANDLE hToken=OpenProcess(PROCESS_ALL_ACCESS,FALSE,(DWORD)hProc); //获得进程的最大权限 if(hToken!=0){ if(fNtTerminateProcess(hToken,1)==0) //关闭程序 { printf("End Proc:%d\",(int)hProc); return TRUE; } else { return FALSE; } } return FALSE; } VB的一个简单示例:Private Const PROCESS_ALL_ACCESS = &H1F0FFF '全权打开进程 Private Function GetMaxPrivilegeToProcess(ByVal ProcessID As Long) As Long GetMaxPrivilegeToProcess = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID) End Function Public Function ExitProc(ByVal PID As Long) As Boolean If NtTerminateProcess(PID, 1) = 0 Then ExitProc = True Else ExitProc = False End If End Function |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。