C#實現關機功能

來源:互聯網
上載者:User

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.