• C#获取本地或远程磁盘使用信息


    因为公司有多个服务器,要检查磁盘的使用情况确定程序放哪个服务器和清理垃圾,所以写个小程序帮忙检查。

    效果图:

    后台代码:

     private void btnCheck_Click(object sender, EventArgs e)
            {
                listBox1.Items.Clear();
                if (rbtnRemote.Checked)
                {
                    //远程
                    RemoteDisk();
                }
                else
                {
                    //本地
                    LocalDisk();
                }
            }
            //查看本地
            private void LocalDisk()
            {
                WqlObjectQuery wmiquery = new WqlObjectQuery("select * from Win32_LogiCalDisk");
                ManagementObjectSearcher wmifind = new ManagementObjectSearcher(wmiquery);
                //显示
                ShowInfo(wmifind);
            }
    
            //远程
            private void RemoteDisk()
            {
                if (cbIP.Text == "" | cbUserName.Text == "" | txtPwd.Text == "")
                {
                    MessageBox.Show("请把信息补充完整!");
                    return;
                }
                string ip = cbIP.Text;
                string username = cbUserName.Text;
                string password = txtPwd.Text;
                ConnectionOptions conn = new ConnectionOptions();
                conn.Username = username;
                conn.Password = password;
                conn.Timeout = new TimeSpan(1,1,1,1);//连接时间
    
                //ManagementScope 的服务器和命名空间。  
                string path = string.Format(@"\{0}
    ootcimv2", ip);
                //表示管理操作的范围(命名空间),使用指定选项初始化ManagementScope 类的、表示指定范围路径的新实例。 
                ManagementScope scope = new ManagementScope(path, conn);  
                scope.Connect(); 
                //查询
                string strQuery = "select * from Win32_LogicalDisk ";
                ObjectQuery query = new ObjectQuery(strQuery);
                //查询ManagementObjectCollection返回结果集  
                ManagementObjectSearcher wmifind = new ManagementObjectSearcher(scope, query);
                ShowInfo(wmifind);
            }
    
            #region 显示磁盘信息
            private void ShowInfo(ManagementObjectSearcher wmifind)
            {
                long gb = 1024 * 1024 * 1024;
                string type = "";
                string str = "";
                double freePath = 0d;
                foreach (var mobj in wmifind.Get())
                {
                    type = mobj["Description"].ToString();
                    //判断是否是本机固盘
                    if (type == "Local Fixed Disk")
                    {
                        str = " 磁盘名称:" + mobj["Name"].ToString();
                        freePath = Math.Round(Convert.ToDouble(mobj["FreeSpace"]) / gb, 1);
                        str += " 可用空间:" + freePath+ "G";
                        str += " 实际大小:" + Math.Round(Convert.ToDouble(mobj["Size"].ToString()) / gb, 1) + "G";
                        if (freePath < 20)
                        {
                            str += "    ----请尽快清理!";
                        }
                        listBox1.Items.Add(str);
                    }
                }
            }
            #endregion
    
            private void rbtnLocal_CheckedChanged(object sender, EventArgs e)
            {
                //本地选中
                if (rbtnLocal.Checked == true)
                {
                    cbIP.Enabled = false;
                    cbUserName.Enabled = false;
                    txtPwd.Enabled = false;
                }
            }
    
            private void rbtnRemote_CheckedChanged(object sender, EventArgs e)
            {
                if (rbtnRemote.Checked == true)
                {
                    cbIP.Enabled = true;
                    cbUserName.Enabled = true;
                    txtPwd.Enabled = true;
                }
            }
  • 相关阅读:
    VUE @hook浅析(监听子组件的生命周期钩子)
    JS生成uuid的四种方法
    [ES7] Private, Static class Members
    [Javascript] Constructor Functions and prototype
    [React Performance] Use CSS Variables instead of React Context?
    [Kotlin Spring boot] A simple demo app
    [Kotlin Spring boot] Dependency injection
    [Javascript] Broadcaster + Operator + Listener pattern -- 15. Create a Sequence of Broadcasters
    [Kotlin Spring boot] Connect template with a backing bean
    [Kotlin Spring boot] Enable automatically recompile for Spring boot project with devtool
  • 原文地址:https://www.cnblogs.com/wei325/p/5441756.html
Copyright © 2020-2023  润新知