返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#实现关机功能
  • 857
分享到

C#实现关机功能

2024-04-02 19:04:59 857人浏览 八月长安
摘要

在网上找的一个在C#中实现关机的类,非常简单,就是一个winapi的封装。在这里记录一下,以备不时之需。 public static class Shutdown { [St

在网上找的一个在C#中实现关机的类,非常简单,就是一个winapi的封装。在这里记录一下,以备不时之需。

public static class Shutdown
{
    [StructLayout(LayoutKind.Sequential, Pack = 1)]
    internal struct TokPriv1Luid
    {
        public int Count;
        public long Luid;
        public int Attr;
    }
    [DllImport("kernel32.dll", ExactSpelling = true)]
    internal static extern IntPtr GetCurrentProcess();
    [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
    internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
    [DllImport("advapi32.dll", SetLastError = true)]
    internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
    [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
    internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,
    ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);

    [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]

    internal static extern bool ExitwindowsEx(int DoFlag, int rea);
    internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
    internal const int TOKEN_QUERY = 0x00000008;
    internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
    internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
    internal const int EWX_LOGoFF = 0x00000000;
    internal const int EWX_SHUTDOWN = 0x00000001;
    internal const int EWX_REBOOT = 0x00000002;
    internal const int EWX_FORCE = 0x00000004;
    internal const int EWX_POWEROFF = 0x00000008;
    internal const int EWX_FORCEIFHUNG = 0x00000010;


    private static void 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);
    }

    public static void Reboot()
    {
        DoExitWin(EWX_FORCE | EWX_REBOOT);
    }
    public static void PowerOff()
    {
        DoExitWin(EWX_FORCE | EWX_POWEROFF);
    }
    public static void LogOff()
    {
        DoExitWin(EWX_FORCE | EWX_LOGOFF);
    }
}

到此这篇关于C#实现关机功能的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#实现关机功能

本文链接: https://lsjlt.com/news/151652.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#实现关机功能
    在网上找的一个在C#中实现关机的类,非常简单,就是一个winapi的封装。在这里记录一下,以备不时之需。 public static class Shutdown { [St...
    99+
    2024-04-02
  • C++实现关机功能详细代码
    目录前言:功能实现:总结前言: 可以写出来后发给你的室友或者好朋友,可以增进你们之间的友谊 功能实现: 输入关机命令语句,shutdown -s -t 60,电脑就会在60秒之后关机...
    99+
    2024-04-02
  • 利用Python实现Windows定时关机功能
    是最初的几个爬虫,让我认识了Python这个新朋友,虽然才刚认识了几天,但感觉有种莫名的默契感。每当在别的地方找不到思路,总能在Python找到解决的办法。自动关机,在平时下载大文件,以及跑程序的时候能用到...
    99+
    2022-06-04
    定时关机 功能 Python
  • C++实现秒表功能
    本文实例为大家分享了C++实现秒表功能的具体代码,供大家参考,具体内容如下 抽象出CLOCK类来制作一个电子秒表,能够自动跳转 代码中有些陌生的库函数,顺便介绍一下: 1.syste...
    99+
    2024-04-02
  • C#实现模拟ATM自动取款机功能
    目录(1)关于用户帐号的类:Account(2)关于银行数据库的类:BankDatabase(3)关于ATM屏幕显示的类:Screen(4)关于ATM键盘的类:Keypad(5)关于...
    99+
    2024-04-02
  • C++怎么实现随机生成信息功能
    在C++中,可以使用rand()函数来生成随机数。下面是一个简单的示例代码,演示如何生成随机数: #include <iost...
    99+
    2024-03-04
    C++
  • Linux关机时执行指定脚本功能实现
    1.关机时执行某个脚本的具体思路 (1)在文件夹/etc/init.d/下创建关机时需要执行的脚本file_name; (2)分别在文件夹/etc/rc0.d/和/etc/rc6.d/下创建该该脚本文件的链接文件K07f...
    99+
    2022-06-04
    Linux 执行脚本
  • Win7系统使用JS脚本实现关机功能
     Win7 32位系统使用JS格式设置关机脚本分享给大家,操作系统过程中遇到关机的方法有很多种,比如通过Shutdown命令设置关机快捷方式,还可以使用js格式设置关机脚本,具体操作如下:1、按&ld...
    99+
    2023-06-14
    Win7系统 JS脚本 关机 脚本 JS 系统
  • C#实现验证码功能
    本文实例为大家分享了C#实现验证码功能的具体代码,供大家参考,具体内容如下 分析 需要四个字符(字母(大小写)+数字) 将四个字符连接成字符串 将连接的字符...
    99+
    2024-04-02
  • C++模拟实现list功能
    目录list介绍构造函数无参构造函数有参构造函数模板区间构造函数拷贝构造函数赋值运算符重载析构函数迭代器迭代器构造函数迭代器关系运算符重载迭代器++ --运算符重载迭代器 * 运算符...
    99+
    2024-04-02
  • C++实现计算器功能
    本文实例为大家分享了C++实现计算器功能的具体代码,供大家参考,具体内容如下 说明: 前面简单尝试过计算器,只能支持加减乘除,这次完善了计算器的功能:支持带括号的表达式;支持&plu...
    99+
    2024-04-02
  • C#实现计算器功能
    本文实例为大家分享了C#实现计算器功能的具体代码,供大家参考,具体内容如下 在刚刚接触c#的时候,就想做一个简单加减乘除计算器。这就是目标,可惜一直没有动手去做,今天特意把它简单做了...
    99+
    2024-04-02
  • C++怎么实现list功能
    这篇文章主要介绍“C++怎么实现list功能”,在日常操作中,相信很多人在C++怎么实现list功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现list功能”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
  • C++实现通讯录功能
    本文实例为大家分享了C++实现通讯录的具体代码,供大家参考,具体内容如下 简介:通讯录由一个拥有者以及通讯信息组成。 基本功能:增删改查 拥有者和通讯信息的基础结构相同,由struc...
    99+
    2024-04-02
  • C#基于百度AI实现机器翻译功能
    目录1、注册百度账号api,创建自己的Api应用2、创建vs控制台应用程序3、编写程序并调试post请求工具类文本翻译-通用版文本翻译-词典版文本翻译-图片翻译总结随着“...
    99+
    2024-04-02
  • php怎么实现关注功能
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php怎么实现关注功能?php + redis 实现关注功能:产品价值 关注功能2: 功能分析之“关注”功能3: 平平无奇的「关注」功能,背后有4点重大价值应用场景在做P...
    99+
    2019-11-14
    php
  • Python实现atm机的功能
    主要还是参考网上内容,自己做了修改。虽然代码有小bug,但是不影响学习和测试。功能:1.额度:80002.可以提现,手续费5%3.每月最后一天出账单,写入文件4.记录每月日常消费流水5.提供还款接口1.atm的脚本[root@python ...
    99+
    2023-01-31
    功能 Python atm
  • PHP会话关机功能
    这篇文章将为大家详细讲解有关PHP会话关机功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 会话关机功能 引言 会话关机功能对于保障 PHP Web 应用程序的安全性至关重要,它使应用程序能够安全...
    99+
    2024-04-02
  • C#实现简易点餐功能
    本文实例为大家分享了C#实现简易点餐功能的具体代码,供大家参考,具体内容如下 图示效果 实现过程 1.设计界面 2.设计控件及其属性 3.实现点击事件、显示事件以及运算 4实现功能...
    99+
    2024-04-02
  • C语言实现导航功能
    本文实例为大家分享了C语言实现导航功能的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #de...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作