整理出来的一个windows关机、锁定、重启、注销 API调用
- using System.Runtime.InteropServices;
- namespace HookDemo
- {
- class WindowsExit
- {
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- private struct TokPriv1Luid
- {
- public int Count;
- public long Luid;
- public int Attr;
- }
- [DllImport("kernel32.dll", ExactSpelling = true)]
- private static extern IntPtr GetCurrentProcess();
- [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
- private static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
- [DllImport("advapi32.dll", SetLastError = true)]
- private static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
- [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
- private static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,
- ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);
- [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
- private static extern bool ExitWindowsEx(int DoFlag, int rea);
- [DllImport("user32.dll")]
- public static extern void LockWorkStation();
- private const int SE_PRIVILEGE_ENABLED = 0x00000002;
- private const int TOKEN_QUERY = 0x00000008;
- private const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
- private const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
- private const int EWX_LOGOFF = 0x00000000;
- private const int EWX_SHUTDOWN = 0x00000001;
- private const int EWX_REBOOT = 0x00000002;
- private const int EWX_FORCE = 0x00000004;
- private const int EWX_POWEROFF = 0x00000008;
- private const int EWX_FORCEIFHUNG = 0x00000010;
- private static bool DoExitWin(int DoFlag)
- {
- bool ok;
- TokPriv1Luid tp;
- IntPtr hproc = GetCurrentProcess();
- IntPtr htok = IntPtr.Zero;
- ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
- tp.Count = 1;
- tp.Luid = 0;
- tp.Attr = SE_PRIVILEGE_ENABLED;
- ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid);
- ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
- ok = ExitWindowsEx(DoFlag, 0);
- return ok;
- }
- /// <summary>
- /// 锁定计算机
- /// </summary>
- public static void Lock()
- {
- LockWorkStation();
- }
- /**/
- /// <summary>
- /// 重新启动
- /// </summary>
- public static bool Reboot()
- {
- return DoExitWin(EWX_FORCE | EWX_REBOOT);
- }
- /**/
- /// <summary>
- /// 关机
- /// </summary>
- public static bool PowerOff()
- {
- return DoExitWin(EWX_FORCE | EWX_POWEROFF);
- }
- /**/
- /// <summary>
- /// 注销
- /// </summary>
- public static bool LogOff()
- {
- return DoExitWin(EWX_FORCE | EWX_LOGOFF);
- }
- }
- }
整理出来的一个windows关机、锁定、重启、注销 API调用的更多相关文章
- 编程实现Windows关机、重启、注销
要想编程使Windows关机.重启或者注销,可以使用ExWindowsEx这个API函数,该函数只有两个参数,第一个表示关机动作的标志,也就是你要让该函数关机呢,还是重启,还是注销等.可以使用EWX_ ...
- Android系统关机或重启的几种实现方式
前阵子工作上遇到一些关于Android系统关机或重启的系统修改,于是,做了一些尝试,也搜集了一下资料,现在整理一下,做一些总结,方便学习或者日后工作的需要. 默认的SDK并没有提供应用开发者直接的An ...
- 手机控制电脑定时关机,重启WiFi
需求 晚上上床,电脑开着WiFi让手机上网.要么上床之前就给电脑设置定时关机:要么就电脑开通宵:要么就待会下来关电脑.这3种情况都非常不好,要么麻烦,要么浪费. 最无奈的是电脑刚开好WiFi,上床后才 ...
- 用 C# 代码如何实现让你的电脑关机,重启,注销,锁定,休眠,睡眠
简介 本文讲述了用 C# 代码如何实现让你的电脑关机,重启,注销,锁定,休眠,睡眠. 如何实现 首先,使用 using 语句添加我们需要的命名空间: using System.Diagnostics; ...
- 使用c#对windows进行关机、重启或注销
方法一:调用windows自带的shutdown.exe (缺点:会出现倒计时窗口) System.Diagnostics.Process.Start("shutdown.exe" ...
- C#实现控制Windows系统关机、重启和注销的方法:
shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设 ...
- C/C++控制Windows关机/注销/重启的正确姿势
简介 说到代码控制Windows关机/注销/重启的方式,有很多种,最简单的不过就是控制命令行,使用system("pause")函数执行一个shutdown -s -t 0,关机就 ...
- C#实现控制Windows系统关机、重启和注销的方法
shutdown命令的参数: shutdown.exe -s:关机shutdown.exe -r:关机并重启shutdown.exe -l:注销当前用户 shutdown.exe -s -t 时间:设 ...
- wpf实现一个windows定时关机的工具
基本界面 起源 在家睡前喜欢用电脑放情景喜剧看,电脑需要定时关机,一开始直接命令行定时关机,感觉有点小麻烦, 于是最近弄了个有界面的 主要功能 在指定的时间之后执行 关机|休眠|重启 的操作, 支持取 ...
随机推荐
- openssl源码安装
下载最新的OpenSSL http://openssl.org/source/ ./config make make install 通过命令openssl version或者openssl ...
- 11 redis之rdb快照持久化
一:Redis持久化配置 Redis的持久化有2种方式[快照,是日志] 二:Rdb快照的配置选项 save 900 1 // 900内,有1条写入,则产生快照 save 300 1000 // 如果3 ...
- 多媒体开发之---h264 高度和宽度获取
( School of Computer Science & Technology, Soochow University,SuZhou 215006:) Abstract: H.264 is ...
- JQuery 获取URL中传递的参数
该方法基于JQuery,然后给方法传递URL中的参数名,返回参数值 (function($){ $.getUrlParam = function(name){ var reg = ...
- C# xml读取操作
以下xml: <Project> <ProjectMains> <ProjectMain Action="added"> <Project ...
- Swift———a Glance(极客学院)笔记
http://www.swiftv.cn/course/hw4sysi7 本课程很短,加起来一个小时,适合作为一个快速了解. 两本书: apple官方<The Swift Programmi ...
- PHP、AJAX综合练习(增、删、改、查、分页、模糊查询)
先来几张效果图 主页面分页显示: 关键字查询,关键字描红 添加数组,弹出窗口,点击保存,再不刷新页面的同时添加到网页数据 修改界面:弹出窗口,文本框中保留点击的车辆的原始信息 主页面代码 <me ...
- 我们计划为EasyDSS定制开发一款超低延时的EasyPlayer Flash播放器
现象 最近团队在做EasyDSS RTMP流媒体服务器开发的过程中,遇到了一个关于延时累积的问题,先大概描述一下过程: 在EasyRTMP Android进行长时间的RTMP推流压力测试,在EasyD ...
- WebService 简单应用
Web服务全称:XML Web Service,是一种可编程的应用程序逻辑组件,它可以在Internet或企业网的Web应用程序之间共享.Web服务被设计成能够通过Internet与其它应用程序之间直 ...
- dubbo介绍及其使用案例
dubbo介绍及其使用案例 1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果 ...