关于终结进程的有难度的问题:如何终结无法终结的进程?详情看内容!绝对不是哗众取宠! 对于一般进程的终结只要搜索一下以前的帖子就一目了然。但是有些进程经过了特殊处理无法终结。比如说瑞星个人防火墙(V1.2.1版),用一般的进程终结代码是无法实现的,不管是用OpenProcess+TerminateProcess还是用PostMessage(hwnd, WM_CLOSE, 0, 0)都不可以。那么如何终结这种无法终结的进程呢?最好请给出具体的代码和解决办法!终结一般进程的代码就不要贴了!分数不是问题,解决了立即给分! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用这个试试PostMessage(hwnd, WM_CLOSE, 0, 0)PostMessage(hwnd, WM_ENDSESSION,0,0) 就算是服务,只要本身进程具有SE_DEBUG_NAME权限,也同样可以关闭。 是可以,我可以终止任意进程,我曾经试过杀死lsass,scvhost等等进程,但是系统会在60秒内关机,我主页(http://kingron.myetang.com)资料里面有强行杀死任何进程的C++代码,你改成Delphi的即可。 呵呵,我们只是从技术上探讨是否可以关闭,但是关闭之后系统是否还能正常运转又是另外一回室事了。 对于一些系统进程最好不要去关闭,比如lasss,scvhost,winlogon,services等系统进程。 补充一点:0、8号进程好像是关不掉的,不知道Kingron老大的程序是否可以关闭它们?(先不管系统是否会有问题) 心情极度郁闷中……仍然给出代码吧。Test OK For Windows XP,2000下没有测试,应该也可以!因为是同一个内核,注意,要用Administrator登陆{ Thank: Jeffrey Richter(MS 开发人员) }{************************************************************ 警告: 在运行下面的测试程序之前请关闭所有程序!否则后果自负 其他问题讨论,请mail: Kingron#163.net*************************************************************}uses TlHelp32;function EnableDebugPrivilege: Boolean; function EnablePrivilege(hToken: Cardinal; PrivName: string; bEnable: Boolean): Boolean; var TP: TOKEN_PRIVILEGES; Dummy: Cardinal; begin TP.PrivilegeCount := 1; LookupPrivilegeValue(nil, pchar(PrivName), TP.Privileges[0].Luid); if bEnable then TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED else TP.Privileges[0].Attributes := 0; AdjustTokenPrivileges(hToken, False, TP, SizeOf(TP), nil, Dummy); Result := GetLastError = ERROR_SUCCESS; end;var hToken: Cardinal;begin OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken); if EnablePrivilege(hToken, 'SeDebugPrivilege', True) then ShowMessage('OK'); CloseHandle(hToken);end;function KillTask(ExeFileName: string): Integer;const PROCESS_TERMINATE = $0001;var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32;begin Result := 0; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while Integer(ContinueLoop) <> 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then Result := Integer(TerminateProcess( OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0)); ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle);end;{ lsass.exe是系统关键进程,任务管理器都不能终止的进程,我们拿他开刀 :-) }procedure TForm1.Button1Click(Sender: TObject);begin EnableDebugPrivilege; Caption := SysErrorMessage(KillTask('lsass.exe'));end; BBBB BBB BBBB BBBBBBBB BBBB BBBB BBBBBBB BBBBBBBBBBBBBBBBBBB BBB BBBB BBBBBBB BBB BBBBBBBBBBBBBBB BBB BBBB BBB BBB BBB BBB BBB BBBB BBBB BBB BBB BBB BBB BBB BBBBBBBBBBBBBBBBBBB BBB BBB BBB BBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBB BBB BBB BBBBBB BBBBBBBBBB BBBB BBBB BBB BBB BBBBBB BBB BBBBBB BBB BBBB BBB BBB BBBBBB BBB BBBBBB BBBB BBBB BBB BBB BBBBBB BBB BBBBBB BBB BBBB BBB BBB BBBBBB BBB BBBBBB BBBB BBB BBB BBB BBBBBB BBBBBB BBBB BBB BBB BBB BBBBBB BBBBBB BBBB BBB BBB BBB BBBBBB BBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBB BBB BBB BBB BBBBBB BBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBB BBB BBBBBB BBBBBB BBBB BBBBBBB BBB BBBBBBBBBBBBB BBBB BBB BBB BBBBBBBBBBBBBBBBB BBBB BBB BBB BBBBBB BBB BBBB BBB BBB BBB BBBB BBB BBB BBB BBBB BBB BBBBBB BBBB BBB BBBBB BBBB BBB BB BBBB 我没有看到8号进程,0号进程中是系统Idel进程,存在的,没有exe对应,无法杀死,System进程也无法杀死。其他的都可以吧。 呵呵,8进程就是System进程嘛! 深夜超级喊救命,如何把一块内在虚拟成硬盘并把EXE保存在上面启动运行 可以把一个ocx控件做成dll么 各位知道哪里有MARC数据生成源码??delphi的 打印或者报表的问题 DELPHI有没十六进制的字符串转为数值的函数? 高分请教用treeview设计一个有4层的树型结构,急(在线等) Combobox方面的 关于Stringgrid??? 工作找的好无奈 还是这里人气旺,问一个别的问题,知道的请回答 请进来看看Delphi7 编写ISAPI的WebService的问题! 请教Clientsocket、Serversocket的type属性。
PostMessage(hwnd, WM_CLOSE, 0, 0)
PostMessage(hwnd, WM_ENDSESSION,0,0)
{ Thank: Jeffrey Richter(MS 开发人员) }
{************************************************************
警告:
在运行下面的测试程序之前请关闭所有程序!否则后果自负
其他问题讨论,请mail: Kingron#163.net
*************************************************************}
uses TlHelp32;function EnableDebugPrivilege: Boolean;
function EnablePrivilege(hToken: Cardinal; PrivName: string; bEnable: Boolean): Boolean;
var
TP: TOKEN_PRIVILEGES;
Dummy: Cardinal;
begin
TP.PrivilegeCount := 1;
LookupPrivilegeValue(nil, pchar(PrivName), TP.Privileges[0].Luid);
if bEnable then
TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else TP.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, False, TP, SizeOf(TP), nil, Dummy);
Result := GetLastError = ERROR_SUCCESS;
end;var
hToken: Cardinal;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
if EnablePrivilege(hToken, 'SeDebugPrivilege', True) then ShowMessage('OK');
CloseHandle(hToken);
end;function KillTask(ExeFileName: string): Integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(
OpenProcess(PROCESS_TERMINATE,
BOOL(0),
FProcessEntry32.th32ProcessID),
0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;{ lsass.exe是系统关键进程,任务管理器都不能终止的进程,我们拿他开刀 :-) }
procedure TForm1.Button1Click(Sender: TObject);
begin
EnableDebugPrivilege;
Caption := SysErrorMessage(KillTask('lsass.exe'));
end;
BBBB
BBB BBBB BBBBBBBB
BBBB BBBB BBBBBBB BBBBBBBBBBBBBBBBBBB
BBB BBBB BBBBBBB BBB BBBBBBBBBBBBBBB
BBB BBBB BBB BBB BBB BBB BBB
BBBB BBBB BBB BBB BBB BBB BBB
BBBBBBBBBBBBBBBBBBB BBB BBB BBB BBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBB BBB BBB BBBBBB BBBBBBBBBB
BBBB BBBB BBB BBB BBBBBB BBB BBBBBB
BBB BBBB BBB BBB BBBBBB BBB BBBBBB
BBBB BBBB BBB BBB BBBBBB BBB BBBBBB
BBB BBBB BBB BBB BBBBBB BBB BBBBBB
BBBB BBB BBB BBB BBBBBB BBBBBB
BBBB BBB BBB BBB BBBBBB BBBBBB
BBBB BBB BBB BBB BBBBBB BBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBB BBB BBB BBB BBBBBB BBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBB BBB BBBBBB BBBBBB
BBBB BBBBBBB BBB BBBBBBBBBBBBB
BBBB BBB BBB BBBBBBBBBBBBBBBBB
BBBB BBB BBB BBBBBB BBB
BBBB BBB BBB BBB
BBBB BBB BBB BBB
BBBB BBB BBBBBB
BBBB BBB BBBBB
BBBB BBB BB
BBBB