Windows 瞬间关机代码

整理资料的时候发现的以前的代码,本机Win7 x64 Sp1 运行直接关机,黑屏。就是利用RtlAdjustPrivilege函数提权,代码中的注释写的很详细了。用的VS2010写的,直接编译成x64就可以运行,直接关机了。

#include "stdafx.h"

#include <Windows.h>
#include <stdio.h>

//定义函数原型
typedef long (__fastcall *pfnRtlAdjustPrivilege64)(ULONG,ULONG,ULONG,PVOID);
typedef int (* pfnZwShutdownSystem)(int);
pfnRtlAdjustPrivilege64 RtlAdjustPrivilege;
pfnZwShutdownSystem  ZwShutdownSystem;

int _tmain(int argc, _TCHAR* argv[])
{
    //装载DLL
    HMODULE hModule = ::LoadLibrary(L"NTDLL.DLL");
    if(hModule == NULL) {
        printf("LoadLibrary error\n");
        return 0;
    }

    //得到导出函数的地址
    RtlAdjustPrivilege = (pfnRtlAdjustPrivilege64)GetProcAddress(hModule, "RtlAdjustPrivilege");
    ZwShutdownSystem = (pfnZwShutdownSystem)GetProcAddress(hModule,"ZwShutdownSystem");
    if(RtlAdjustPrivilege == NULL) {
        printf("GetProcAddress error \n");
        return 0;
    }

    //取得系统版本
    OSVERSIONINFO osvi;
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    if(GetVersionEx(&osvi) == 0) {
        return false;
    }
    DWORD  dwReturnval;
    if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) {
        /*
        .常量 SE_BACKUP_PRIVILEGE, "17", 公开
        .常量 SE_RESTORE_PRIVILEGE, "18", 公开
        .常量 SE_SHUTDOWN_PRIVILEGE, "19", 公开
        .常量 SE_DEBUG_PRIVILEGE, "20", 公开
        */
        RtlAdjustPrivilege(19, 1, 0, &dwReturnval);
    }
    //强制关机, 不向进程发送WM_QUERYENDSESSION消息
    //ExitWindowsEx(EWX_FORCE, 0); //退出用户
    ZwShutdownSystem(2);  //直接黑屏
    return 0;
}
时间: 2025-01-20 17:51:37

Windows 瞬间关机代码的相关文章

C#控制Windows系统关机、重启和注销的代码

如下资料是关于C#控制Windows系统关机.重启和注销的代码. protected void btnShutDown_Click(object sender, EventArgs e) { } protected void btnRestart_Click(object sender, EventArgs e) { } protected void btnLogOff_Click(object sender, EventArgs e) { } 原文地址:https://www.cnblogs.

深入windows的关机消息截获-从XP到Win7的变化(在XP中程序可以阻止关机,但是在Win7中程序无法阻止关机,可Block的时间从1秒调到了5秒) good

之前写了一个软件用于实验室的打卡提醒,其中一个重要的功能是在关机之前提醒当天晚上是否已经打卡.之前我是在WM_ENDSESSION中弹出一个模态对话框来提醒,在XP中基本工作正常,在Win7中大多数时候工作正常,但是有时候会出现不提醒现象.我想这中间是不是有什么玄机,Windows的关机方案从XP到Win7到底发生了什么变化,如何进行有效的截获Windows关机消息.对此,我搜寻了MSDN和网上论坛结合自己的测评给出一个完善的描述和解决方案,如果你有类似的需求,可以参考这篇文章. 在MSDN中对

C#实现控制Windows系统关机、重启和注销的方法:

shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设置关机倒计时shutdown.exe -h:休眠shutdown.exe -t 时间:设置关机倒计时.默认值是 30 秒.shutdown.exe -a:取消关机shutdown.exe -f:强行关闭应用程序而没有警告shutdown.exe -m \计算机名:控制远程计算机shutdown.ex

深入windows的关机消息截获-从XP到Win7的变化

之前写了一个软件用于实验室的打卡提醒,其中一个重要的功能是在关机之前提醒当天晚上是否已经打卡.之前我是在WM_ENDSESSION中弹出一个模态对话框来提醒,在XP中基本工作正常,在Win7中大多数时候工作正常,但是有时候会出现不提醒现象.我想这中间是不是有什么玄机,Windows的关机方案从XP到Win7到底发生了什么变化,如何进行有效的截获Windows关机消息.对此,我搜寻了MSDN和网上论坛结合自己的测评给出一个完善的描述和解决方案,如果你有类似的需求,可以参考这篇文章. 在MSDN中对

windows远程关机重启

windows远程关机 http://lsscto.blog.51cto.com/779396/245681 shutdown http://baike.baidu.com/view/596875.htm 用法: shutdown [-i | -l | -s | -r | -a] [-f] [-m \\computername] [-t xx] [-c "comment"] [-d up:xx:yy]              没有参数                     显示此消

C#实现控制Windows系统关机、重启和注销的方法

shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设置关机倒计时shutdown.exe -h:休眠shutdown.exe -t 时间:设置关机倒计时.默认值是 30 秒.shutdown.exe -a:取消关机shutdown.exe -f:强行关闭应用程序而没有警告shutdown.exe -m \计算机名:控制远程计算机shutdown.exe -i:显示"远程关机&qu

用github for windows上传代码

一直用github在网上下载代码,这次总结一下上传代码的方法. 首先安装github for windows,登录帐号. 之后新建一个仓库(在repositories里点击create) 然后输入名称,设置保存路径,点create. 此时会在你设置路径的地方出现一个文件夹.把你的代码放入该文件夹中. 进入github的该项目,它会自动检测更新情况. 在左侧填入相应的信息,ok 然后点击右上方的publish 此时右上方会变成sync,点击sync即可上传到远端服务器. 用github for w

解读Windows蓝屏代码,了解故障起因

Windows蓝屏代码全析:0x00000026 到达档案结尾.0x00000027 磁盘已满.0x00000032 不支持这种网络要求.0x00000033 远程计算机无法使用.0x00000034 网络名称重复.0x00000035 网络路径找不到.0x00000036 网络忙碌中.0x00000037 The specified network resource or device is no longer available.0x00000038 The network BIOS com

使用github for windows 来将代码托管到github中

本博文只是简单的介绍一下使用github for windows 来将代码托管到github上,可能讲得不会太深入, 如果想深入了解原理性的东西,可以去阅读一下<GIT权威指南>这本书~~~~本人觉得挺不错的... 其实简单总结以下,git的简单使用无非是上传.下载.修改,导入工程. 以下讲解均默认你已经正确安装了github for windows. 一.上传代码 1.在github官网上,用你的账户创建一个新的仓库(repository,简写repo). 该过程的图示如下图所示: 1) 2