对于一般进程的终结只要搜索一下以前的帖子就一目了然。但是有些进程经过了特殊处理无法终结。比如说瑞星个人防火墙(V1.2.1版),用一般的进程终结代码是无法实现的,不管是用OpenProcess+TerminateProcess还是用PostMessage(hwnd, WM_CLOSE, 0, 0)都不可以。那么如何终结这种无法终结的进程呢?最好请给出具体的代码和解决办法!终结一般进程的代码就不要贴了!分数不是问题,解决了立即给分!

解决方案 »

  1.   

    用这个试试
    PostMessage(hwnd, WM_CLOSE, 0, 0)
    PostMessage(hwnd, WM_ENDSESSION,0,0)
      

  2.   

    就算是服务,只要本身进程具有SE_DEBUG_NAME权限,也同样可以关闭。
      

  3.   

    是可以,我可以终止任意进程,我曾经试过杀死lsass,scvhost等等进程,但是系统会在60秒内关机,我主页(http://kingron.myetang.com)资料里面有强行杀死任何进程的C++代码,你改成Delphi的即可。
      

  4.   

    呵呵,我们只是从技术上探讨是否可以关闭,但是关闭之后系统是否还能正常运转又是另外一回室事了。 对于一些系统进程最好不要去关闭,比如lasss,scvhost,winlogon,services等系统进程。
      

  5.   

    补充一点:0、8号进程好像是关不掉的,不知道Kingron老大的程序是否可以关闭它们?(先不管系统是否会有问题)
      

  6.   

    心情极度郁闷中……仍然给出代码吧。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;
      

  7.   


                                                                
                  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.   

    我没有看到8号进程,0号进程中是系统Idel进程,存在的,没有exe对应,无法杀死,System进程也无法杀死。其他的都可以吧。
      

  9.   

    呵呵,8进程就是System进程嘛!