zoukankan      html  css  js  c++  java
  • C#实现关机功能

           Shutdown命令简介:
           用法: shutdown [/i | /l | /s | /r | /a | /p | /h | /e] [/f]
            [/m //computer][/t xxx][/d [p:]xx:yy [/c "comment"]]
            没有参数   显示帮助。这与键入 /? 是一样的
            /?       显示帮助。这与不键入任何选项是一样的
            /i        显示图形用户界面(GUI)。
                      这必须是第一个选项
            /l        注销。这不能与 /m 或 /d 选项一起使用
            /s       关闭计算机
            /r        关闭并重启动计算机
            /a       放弃系统关闭。
                      这只能在超时过程中使用
            /p      关闭本地计算机,没有超时或警告。
                     这只能与 /d 选项一起使用
            /h         休眠本地计算机。
                   这只能与 /f 选项一起使用
            /e         将计算机的意外关闭原因记入文档
            /m //computer 指定目标计算机
            /t xxx     设置关闭前的超时为 xxx 秒。
                   有效范围是 0-600,默认为 30
            /c "comment" 重启动或关闭的原因的注释。
                   最大允许 127 个字符
            /f         强制正在运行的应用程序关闭而不事先警告用户
            /d [p:]xx:yy  提供重启动或关闭的原因
                   p 表明重启动或关闭是计划内的
                   xx 是主要原因号(小于 256 的正整数)
                   yy 是次要原因号(小于 65536 的正整数)
           代码如下:
                System.Diagnostics.Process bootProcess = new System.Diagnostics.Process();
                bootProcess.StartInfo.FileName = "shutdown";
                bootProcess.StartInfo.Arguments = "/s";
                bootProcess.Start();

           后来仔细想了想,在应用程序中提供了一个完整的实现系统关机、重启、注销的类库,DLL文件为System.ManagerMent.dll,这是WMI的使用。

           WMI是英文Windows Management Instrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等。其中WMI中含有语言WOL,用于实现各种操作。下面是实现关机的代码:

                ConnectionOptions BootConn = new ConnectionOptions();
                BootConn.Username = "XXXX";
                BootConn.Password = "XXXXXX";
                ManagementScope ms = new ManagementScope("////计算机名或IP地址//root//cimv2", BootConn);
                ms.Options.EnablePrivileges = true;
                try
                {
                    ms.Connect();
                }
                catch (Exception err)
                {
                    MessageBox.Show(err.ToString());
                }
                if (ms.IsConnected)
                {
                    try
                    {
                        ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
                        ManagementObjectSearcher mos = new ManagementObjectSearcher(ms, oq);
                        ManagementObjectCollection moc = mos.Get();
                        foreach (ManagementObject mo in moc)
                        {
                            string[] ss = { "8", "4" };
                            mo.InvokeMethod("Win32Shutdown", ss);
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }


     

  • 相关阅读:
    奥卡姆剃刀和没有免费的午餐定理
    print("decimal hex chr {0:^30}".format("name")) 是什么意思
    python爬虫准备知识---2、为什么选择python来进行爬虫
    python日常疑难---2、python中查看函数帮助
    python超简单实用爬虫操作---6、模拟登录获取数据
    python requests库 爬取视频
    利用Python中的requests库爬取视频的图片
    python超简单实用爬虫操作---5、爬取视频
    python超简单实用爬虫操作---4、爬取图片
    用Intent实现activity的跳转
  • 原文地址:https://www.cnblogs.com/52net/p/2522417.html
Copyright © 2011-2022 走看看