zoukankan      html  css  js  c++  java
  • C#调用WMI关机示例

    WMI中Win32_OperationSystem的方法Win32ShutDown(flag)中flag的参数可以是下表中的任意一种:

    值 描述
    0 注销
    0 + 4 强制注销
    1 关机
    1 + 4 强制关机
    2 重起
    2 + 4 强制重起
    8 关闭电源
    8 + 4 强制关闭电源

    下面是示例:

    //关闭计算机
    private void btn_Shutdown_Click(object sender, EventArgs e)
    {
        string IPShutdown = "192.168.1.100";

        DialogResult dlResult = MessageBox.Show("确实要关闭“" + IPShutdown + "”电源吗?", "请确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (dlResult == DialogResult.Yes)
        {
            string[] inParams ={ "8", "4" };
            BootComputer ShutdownBootComputer = new BootComputer();
            ShutdownBootComputer.strIp = IPShutdown;
            ShutdownBootComputer.strAdmin = txtAdmin.Text.Trim();
            ShutdownBootComputer.strPassword = txtPassword.Text.Trim();
            ShutdownBootComputer.strMothod = "Win32Shutdown";
            ShutdownBootComputer.inParams = inParams;
            ShutdownBootComputer.BootMachine();
        }
    }

    //关闭重启计算机(支持多线程)
    public class BootComputer
    {
        public string strIp, strAdmin, strPassword, strMothod;
        public string[] inParams;
        public void BootMachine()
        {
            ConnectionOptions BootConn = new ConnectionOptions();
            BootConn.Username = strAdmin;
            BootConn.Password = strPassword;
            ManagementScope ms = new ManagementScope("\\\\" + strIp + "\\root\\cimv2", BootConn);
            ms.Options.EnablePrivileges = true;
            if (!string.IsNullOrEmpty(strAdmin) && !string.IsNullOrEmpty(strPassword))
            {
                try { ms.Connect(); }
                catch { }
            }
            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 = inParams;
                        mo.InvokeMethod(strMothod, ss);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(strIp + ":" + ex.Message + "网络不通或用户名、密码不正确!");
                }
            }
        }
    }

  • 相关阅读:
    DNS 主从同步配置
    Linux LVM卷组管理
    python ssh 执行shell命令
    python 批量远程机器,执行Linux命令
    连接管理 与 Netty 心跳机制
    java 注解 知识整理
    SOFARPC —— SPI 解析
    SOFARPC —— Generic Service (泛化调用) 解析
    线程池
    关于ava容器、队列,知识点总结
  • 原文地址:https://www.cnblogs.com/mossan/p/749644.html
Copyright © 2011-2022 走看看