如何使用C#关闭计算机?
答案 0 :(得分:10)
一种简单的方法:使用Process.Start运行shutdown.exe。
shutdown /s /t 0
编程方式:P /调用ExitWindowsEx
这将是P / Invoke签名:
[DllImport("aygshell.dll", SetLastError="true")]
private static extern bool ExitWindowsEx(uint dwFlags, uint dwReserved);
在所有情况下,运行代码的用户都需要关闭系统权限(通常不是问题,但重要的是要记住)。
答案 1 :(得分:5)
不同的方法:
一个。 System.Diagnostics.Process.Start(“Shutdown”,“ - - -t 10”);
B中。 Windows Management Instrumentation(WMI)
http://www.csharpfriends.com/Forums/ShowPost.aspx?PostID=36953
http://www.dreamincode.net/forums/showtopic33948.htm
℃。 System.Runtime.InteropServices Pinvoke
http://bytes.com/groups/net-c/251367-shutdown-my-computer-using-c
d。系统管理
http://www.geekpedia.com/code36_Shut-down-system-using-Csharp.html
在我提交之后,我看到很多其他人也发布了......
答案 2 :(得分:3)
WindowsController是一个围绕ExitWindowsEx的c#包装类。
有时你需要重启或 关闭操作系统 你的应用程序(例如,之后 安装程序)。该 .NET框架为您提供间接的 通过重启计算机的方法 Windows Management Instrumentation System.Management中的(WMI)类 然而,命名空间似乎有 他们的实施中存在一些问题。
这就是我们创造的原因 WindowsController类 实现一些API函数 重启并关闭Windows。它 支持所有ExitWindowsEx模式 它也可以休眠和暂停 系统。
这个课程在C#和 VB.NET版本。它可以编译为 一个.NET模块或一个库 用于其他.NET语言。以来 它依赖于Windows API,它会 不适用于Linux或FreeBSD。
(mentalis.org)
答案 3 :(得分:1)
使用here显示的“用户注销”代码的变体。
该代码使用ExitWindowsEx
API调用。
答案 4 :(得分:0)
猜测(未经测试):
Process.Start("shutdown", "-s -t 0");
答案 5 :(得分:0)
艰难的方式,完美适用于笔记本电脑,虽然需要一些时间:
Spawn a couple endless loops in more threads than cpu cores.
Wait for overheat which will automatically shutdown a computer.
:)
答案 6 :(得分:0)
您也可以使用InitiateSystemShutdown
http://www.pinvoke.net/default.aspx/advapi32.initiatesystemshutdown
using System;
using System.Runtime.InteropServices;
using System.Text;
public class Program
{
[DllImport( "advapi32.dll" ) ]
public static extern bool InitiateSystemShutdown( string MachineName , string Message , uint Timeout , bool AppsClosed , bool Restart );
[DllImport( "kernel32.dll" ) ]
public static extern uint GetLastError();
[DllImport( "kernel32.dll" ) ]
public static extern uint FormatMessage( uint Flags , IntPtr Source , uint MessageID , uint LanguageID , StringBuilder Buffer , uint Size , IntPtr Args );
public static void Main()
{
InitiateSystemShutdown(System.Environment.MachineName, "hello", 0, false, false);
//InitiateSystemShutdown("localhost", "hello", 0, false, false);
}
}