眾所周知,當我們要結束乙個程序時,可以呼叫windows api函式terminateprocess函式。但是,有很多程序依然還是無法結束的,這是因為程序許可權不夠,這時我們可以給程序提公升許可權再k掉k不掉的程序。一般程序獲取了sedebugprivilege許可權後都可以殺掉大部分程序了。
//提公升程序令牌函式
function adjustprocessprivilege(processhandle:thandle;token_name:pchar):boolean;
vartoken:cardinal;
tokenpri:_token_privileges;
processdest:int64;
l:dword;
begin
result:=false;
if openprocesstoken(processhandle,token_adjust_privileges,token) then
begin
if lookupprivilegevalue(nil,token_name,processdest) then
begin
tokenpri.privilegecount:=1;
tokenpri.privileges[0].attributes:=se_privilege_enabled;
tokenpri.privileges[0].luid:=processdest;
l:=0;
//更新程序令牌,成功返回true
if adjusttokenprivileges(token,false,tokenpri,sizeof(tokenpri),nil,l) then
result:=true;
end;
end;
end;
然後我們就可以呼叫該函式了:
if adjustprocessprivilege(getcurrentprocess,'sedebugprivilege') then //提公升許可權
memo1.lines.add('提公升許可權成功')
else
memo1.lines.add('提公升許可權失敗');
processhandle:=openprocess(process_all_access ,false,processid); //殺程序
if terminateprocess(processhandle,1) then
begin
memo1.lines.add('殺程序成功');
timer1.enabled:=false;
endelse
memo1.lines.add('殺程序失敗');
end;
DELPHI 中如何提公升程序令牌
delphi 中如何提公升程序令牌 近一段時間在用delphi寫個程式,當我寫到乙個結束其他程序的模組的時候有時不成功,那是因為其他程序,如病毒程序的許可權高,通過常規的結束程序的函式行不通,要首先提高自身程式的許可權,再結束其他程序 在網上也看到了一些提公升程序令牌的函式但都不怎麼好用,最後我還是...
怎麼除錯Delphi原始碼
delphi除錯概述2007 06 13 16 15delphi除錯入門級的經典文章,如果是新手的話此文值得好好的讀一讀 delphi除錯概述 除非你的程式只有幾行,否則幾乎不可能一次寫成,因此除錯就非常必要。然而許多初學者不知道如何進行除錯,寫完程式就執行,發現結果不對再看 這樣覺得非常吃力。這裡...
kernel原始碼學習 程序
linux使用上百個雙向鍊錶來儲存核心的各種資料結構,其中包括程序描述符的task struct結構.cpp struct list head 在list.h中,形如 的函式用來操作整個鍊錶,而不是單個鍊錶元素.程序從pid得到程序描述符pd要一種高效的方法,提到高效方法,那就用雜湊表啦.核心在這兒...