zoukankan      html  css  js  c++  java
  • DELPHI根据进程名强制关闭进程

    unit Tlhelp323;

    interface

    uses
    Tlhelp32;


    implementation

    //结束进程
    function TForm1.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;

    //提权
    function TForm1.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;  

    procedure TForm1.Button1Click(Sender: TObject);
    var
    hToken: Cardinal;
    begin

    //若是服务进程,则需要将权限提升到debug,才能关闭
       EnablePrivilege(hToken, 'SeDebugPrivilege', True);
       KillTask('notepad');

    end;

    end.


    使用的时候先EnableDebugPrivilege提升权限,然后KillTask(ExeFileName: string)

  • 相关阅读:
    C#多线程编程之:集合类中Synchronized方法与SyncRoot属性原理分析
    Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用
    C++:基类和派生类
    C++:友元(非成员友元函数、成员友元函数、友元类)
    C++:静态成员
    C++:向函数传递对象(对象、对象指针、对象引用)
    C++:常类型Const
    C++:对象的赋值和复制
    C++:类的组合
    C++:析构函数
  • 原文地址:https://www.cnblogs.com/luckForever/p/7255267.html
Copyright © 2011-2022 走看看