zoukankan      html  css  js  c++  java
  • 快速关机[原创]

    // 以下代码实现在NT以上系统的快速关机,关机速度在2秒以内,不保存资料,不伤硬盘
    typedef
    enum _SHUTDOWN_ACTION {

         ShutdownNoReboot,      // 关机

         ShutdownReboot,         // 重启

         ShutdownPowerOff      // 这个没有试,有心的人试下

    }SHUTDOWN_ACTION;

     

    DWORD (__stdcall *NtShutdownSystem)(SHUTDOWN_ACTION);

     

    VOID ShutDown()

    {

         HANDLE hToken;
         // 得到关机权限 

         if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken))

         {

             TOKEN_PRIVILEGES tkp;

     

             LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);

            

             tkp.PrivilegeCount = 1;

             tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

     

             AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0);

             CloseHandle(hToken);

         }

     

         // 加载未公开API,强行关机(快速)

         HMODULE mod;

         mod = LoadLibrary("ntdll.dll");

         NtShutdownSystem = (DWORD(__stdcall *)(SHUTDOWN_ACTION))GetProcAddress(mod, "NtShutdownSystem");

     

         NtShutdownSystem(ShutdownNoReboot);

    }

  • 相关阅读:
    shell命令运行符号&、;、&&区别
    绕过CDN查看真实IP的有效方法
    kali Linux各历史版本
    Referer详解
    HttpServletResponse详解
    XML中保留字符及实体引用
    PreparedStatement用法详解
    Abnormal build process termination IDEA启动报错
    解决stackOverflow打开慢的问题
    git报错---If no other git process is currently running...
  • 原文地址:https://www.cnblogs.com/flying_bat/p/549401.html
Copyright © 2011-2022 走看看