zoukankan      html  css  js  c++  java
  • Delphi关机代码(转至swish)

    type

      TShutdownAction = (saLogoff, saReboot, saPoweroff);
     
    function Shutdown(Action: TShutdownAction; AForce: Boolean): Boolean;
      function EnableShutdownPrivilege: Boolean;
      var
        hProcess, hToken: THandle;
        priv, lastpriv: TOKEN_PRIVILEGES;
        lastlen: Cardinal;
      const
        SE_SHUTDOWN_NAME: PWideChar = 'SeShutdownPrivilege';
      begin
        FillChar(priv, sizeof(priv), 0);
        FillChar(lastpriv, sizeof(priv), 0);
        hProcess := GetCurrentProcess;
        Result := False;
        if OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)
        then
        // 打开当前进程的访问令牌句柄(OpenProcessToken函数调用失败返回值为零)
        begin
          if LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, priv.Privileges[0].LUID)
          then
          begin
            priv.PrivilegeCount := 1; // 欲调整的权限个数
            priv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
            // 权限的属性,SE_PRIVILEGE_ENABLED为使能该权限
            if AdjustTokenPrivileges(hToken, False, priv, sizeof(priv), lastpriv,
              lastlen) then // 调整访问令牌里的指定权限(AdjustTokenPrivileges函数调用失败返回值为零)
              Result := GetLastError = ERROR_SUCCESS;
          end;
          CloseHandle(hToken);
        end;
      end;
     
    var
      AFlags: Integer;
    begin
      Result := EnableShutdownPrivilege;
      if Result then // 使能关机特权函数
      begin
        if AForce then
          AFlags := EWX_FORCE
        else
          AFlags := 0;
        case Action of
          saLogoff:
            AFlags := AFlags or EWX_LOGOFF;
          saReboot:
            AFlags := AFlags or EWX_REBOOT;
          saPoweroff:
            AFlags := AFlags or EWX_SHUTDOWN;
        end;
        Result := ExitWindowsEx(AFlags, 0) // 强制关机
      end;
    end;
  • 相关阅读:
    js中cookie的操作
    javascript HTML静态页面传值的四种方法
    更改ligerui源码实现分页样式修改
    javascript Date format(js日期格式化)
    LigerUI用PostGetAjax前后台交互方式的写法
    html中 accept 属性
    jQuery.ajax() 设置 Headers 中的 Accept 内容
    C# 事件(Event)
    C# 委托(Delegate)
    C# 反射(Reflection)
  • 原文地址:https://www.cnblogs.com/mianli/p/12486867.html
Copyright © 2011-2022 走看看