`

C#实现注销、重启和关机代码

    博客分类:
  • .net
阅读更多

首先要导入对命名空间

using System.Runtime.InteropServices;

的引用

[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 flg, 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 flg)

        {

            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(flg, 0);

        }

        private void button2_Click(object sender, EventArgs e)

        {

            //此代码实现重启功能

            DoExitWin(EWX_REBOOT);

        }

        private void button3_Click(object sender, EventArgs e)

        {

             //此代码实现注销功能

            DoExitWin(EWX_LOGOFF);

        }

        private void button1_Click_1(object sender, EventArgs e)

        {

             //此代码实现关机功能

            DoExitWin(EWX_SHUTDOWN);

        }

分享到:
评论

相关推荐

    C# 实现关机,注销,重启

    C#作为一种广泛使用的编程语言,提供了丰富的API来实现对Windows操作系统的深度控制,包括关机、注销和重启等高级操作。本文将深入探讨如何使用C#来实现这些功能,不仅限于代码示例,还将涵盖背后的原理和技术细节。...

    C#实现关机,注销,重启的代码文件

    在C#编程环境中,开发人员有时需要实现对操作系统的一些...总的来说,"C#实现关机,注销,重启的代码文件"为开发者提供了一个方便的工具,通过封装Windows API,使得在C#应用中进行系统级的控制变得更加简单和安全。

    c#实现关机_注销_重启源代码

    在C#编程中,实现计算机的关机、注销和重启功能通常涉及到Windows API的调用。Windows API是操作系统提供的一组函数,允许开发者执行特定的操作,如控制系统进程、管理硬件资源等。以下是一个简单的C#应用实例,用于...

    c#关机重启注销源程序

    标题中的“c#关机重启注销源程序”是指利用C#编程实现对Windows操作系统进行关机、重启和注销的功能。这样的程序对于系统管理、自动化任务或者教学实践具有一定的实用价值。下面将详细介绍如何使用C#实现这些功能。 ...

    C# 实现Windows自动关机、重启、注销、待机和休眠

    通过上述代码示例和解释,我们已经了解了如何使用 C# 来实现 Windows 自动关机、重启、注销、待机和休眠的功能。这涉及到 Windows API 的调用、枚举和结构体的定义等多个方面。掌握这些技巧对于开发与操作系统紧密...

    c# 关机,重启,注销小程序

    在C#编程环境中,开发一个能够执行系统操作如关机、重启、注销的小程序是一项基本的任务,这通常涉及到操作系统级别的交互。以下是对这些功能的详细解释: 1. **关机**: C#中实现系统关机的功能可以利用`System....

    C#调用系统关机、重启和注销功能

    下面是一个示例代码,演示如何使用C#语言调用系统关机、重启和注销功能: ```csharp [StructLayout(LayoutKind.Sequential, Pack = 1)] internal struct TokPriv1Luid { public int Count; public long Luid; ...

    C# .NET 关机 重启 注销 小秘书

    在“C# .NET 关机 重启 注销 小秘书”这个主题中,我们将深入探讨如何使用C#来实现计算机的关机、重启和注销操作。这些功能对于系统管理工具、定时任务或者自动化脚本来说非常实用。 首先,我们需要理解的是,由于...

    C#关机、注销、待机、重启等系列源码

    当涉及到“C#关机、注销、待机、重启等系列源码”时,我们讨论的是利用C#编程语言来实现对Windows操作系统的这些特定功能。C#是Microsoft开发的一种面向对象的编程语言,它为开发Windows应用程序提供了强大的支持。 ...

    C#实现远程关机(重启、注销)源码

    本示例中,我们将深入探讨如何利用C#来实现远程计算机的关机、重启和注销功能,这些功能是通过Windows Management Instrumentation(WMI)技术实现的。 WMI是微软提供的一种管理系统资源的方法,它允许程序通过脚本...

    C# 截获关机、注销、重启的消息

    总结来说,要在C#中实现截取关机、注销、重启消息并在执行前播放Logo动画的功能,需要深入理解Windows消息机制,熟悉使用Windows API,以及掌握异步编程和动画制作技术。这不仅可以提升用户体验,也可以作为提高应用...

    C# 系统重启 注销 定时关机程序源码

    本主题关注的是使用C#实现系统重启、注销和定时关机功能的程序源码。这些功能是系统管理的重要组成部分,对于提升用户体验和自动化任务调度具有实际价值。下面将详细介绍这些知识点。 首先,我们需要理解C#的基础...

    C#实现重启、关机、开关显示器的方法

    下面是一个完整的示例代码,展示如何使用 C# 语言来实现重启、关机、开关显示器的方法: ```csharp using System; using System.Runtime.InteropServices; public class MyControl { [StructLayout(LayoutKind....

    C#——window 关机、注销、重启,源代码

    在C#编程环境中,开发与操作系统交互的应用程序是一项常见的任务,比如实现计算机的关机、注销和重启功能。本文将详细讲解如何使用C#来实现这些功能,并提供相关的源代码参考。 首先,我们需要理解C#如何与Windows ...

    C# winfrom 关机 重启 注销 定时关机(源码)

    在本文中,我们将深入探讨如何使用C# Winform来实现计算机的关机、重启和注销功能,以及如何添加定时关机的功能。C#是Microsoft开发的一种面向对象的编程语言,常用于构建Windows桌面应用程序,而Winform是C#中用于...

    C#语言编程 计算机关机代码(C#编程)

    在C#编程中,计算机操作如关机、重启和注销是通过操作系统提供的API函数或者.NET Framework中的类来实现的。本示例仅涉及了关机功能的实现,但并未涵盖重启和注销,以及如何取消这些操作。下面我们将深入探讨如何在...

    C# 定时 关机 重启 注销

    标题中的"C# 定时 关机 重启 注销"指的是使用C#编程语言来实现操作系统级别的定时任务,包括计算机的关机、重启和注销功能。这些功能通常涉及到Windows API调用,因为.NET Framework本身并不直接提供这样的接口。...

    C#关机代码,重启,死机

    根据给定文件的信息,我们可以总结...通过上述内容,我们可以了解到在C#中实现计算机重启或关机的基本方法和步骤。需要注意的是,由于涉及系统级别的操作,编写此类代码时应特别小心,避免出现意外情况导致系统不稳定。

    C#关机源代码C#关机源代码Shutdown

    在C#编程环境中,开发一个能够执行系统关机操作的应用程序涉及到对操作系统API的调用。...在实际项目中,这样的功能可能会被封装在一个更复杂的系统管理工具中,包含其他操作系统任务,如重启、注销等。

Global site tag (gtag.js) - Google Analytics