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);

    }

  • 相关阅读:
    [杂说]网络是基础生产工具
    这几天的工作
    [代码]大家来动动脑筋吧
    测试
    [基础] 如何使用extern和static限定符
    元宵节快乐
    复杂的“人"
    C# SMTP发邮件不支持465端口的解决方案,网易企业邮箱
    软件三层架构模型
    ASP.NET MVC 使用二级域名来注册Area区域
  • 原文地址:https://www.cnblogs.com/flying_bat/p/549401.html
Copyright © 2011-2022 走看看