• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#实现关机功能

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

       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);
                }
            }


 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#文件输入输出流发布时间:2022-07-13
下一篇:
C#获取客户端UTC时间及其总毫秒数解决方案发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap