• delphi强制终止进程


    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;

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

    procedure KillPro;
    var
    hToken: Cardinal;
    begin

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

  • 相关阅读:
    sqlplus 汉字乱码问题的解决
    Windows下RMAN备份脚本
    Oracle sqlplus prelim 参数介绍
    Oracle BBED 工具 说明
    Oracle BBED 工具 说明
    Oracle DBV 工具 说明
    Windows下RMAN备份脚本
    Oracle corrupt block(坏块) 详解
    Oracle Rowid 介绍
    Oracle sqlplus 常用命令总结
  • 原文地址:https://www.cnblogs.com/zyb2016/p/14107121.html
Copyright © 2020-2023  润新知