-
NtTerminateProcess
鎖定
NtTerminateProcess,Windows的關閉程序的函數。
- 外文名
- NtTerminateProcess
- 定 義
- Windows的關閉程序的函數
- 級 別
- 屬於內核級
- 退出代碼
- ExitStatus
NtTerminateProcess函數簡介
這是一個,,大多數的程序都使用這個函數來實現關閉程序
也許你使用的是TerminateProcess,但是TerminateProcess是通過調用NtTerminateProcess來實現關閉程序的
NtTerminateProcess函數原型
NtTerminateProcessC、C++
NtTerminateProcess(
IN HANDLE ProcessHandle OPTIONAL,
IN NTSTATUS ExitStatus);
NtTerminateProcessVB
Declare Function NtTerminateProcess Lib "ntdll" (ByVal hProc As Long, ByVal ExitCode As Long) As Long
NtTerminateProcess參數意義
ProcessHandle : 進程的句柄,要用OpenProcess來獲得
NtTerminateProcess函數調用
TerminateProcess ->NtTerminateProcess ->ZwTerminateProcess
有時候,TerminateProcess 不能完全地結束一個進程,但是NtTerminateProcess 可以,ZwTerminateProcess 是基於內核驅動來關閉進程的.
NtTerminateProcessC++示例
#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\n",(int)hProc);
return TRUE;
}
else
{
return FALSE;
}
}
return FALSE;
}
NtTerminateProcessVB示例
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
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:9次歷史版本
- 最近更新: 星V_S痕