C# c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存等

CIMWin32 WMI Providers

WMI是什么

Windows 管理规范(Windows Management Instrumentation)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。WMI通过编程和脚本语言为日常管理提供了一条连续一致的途径
 

功能

WMI 的功能还包括事件触发、远程调用、查询、查看、架构的用户扩展、指示、

· 在远程计算机器上启动一个进程。
· 设定一个在特定日期和时间运行的进程。
· 远程启动计算机。
· 获得本地或远程计算机的已安装程序列表。
· 查询本地或远程计算机的 Windows 事件日志。

作用范围

WMI 可用于所有基于Windows的应用程序,在企业应用程序和管理脚本中非常有用。

WMI的使用

通过编写脚本或应用程序从 WMI 获取数据

 

 

  • 如果我们是C++程序员,我们可以通过COM技术直接与下层通信。
  • 而脚本语言则要支持WMI Scripting API,间接与下层通信。
  • 对于.net平台语言,则要使用System.Management域相关功能与下层通信。

 C#中应用System.Management

c#中如何获取本机用户名、MAC地址、IP地址、硬盘IDCPU序列号、系统名称、物理内存。等等。

通过WMI读取系统信息里的网卡MAC

using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace LYFWPFUI.Help
{
    internal static class MacLocation
    {
        /// <summary>
        ///  通过WMI读取系统信息里的网卡MAC
        /// </summary>
        /// <returns></returns>
        public static List<string> GetMacByWMI()
        {
            List<string> macs = new List<string>();
            try
            {
                string mac = "";
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"])
                    {
                        mac = mo["MacAddress"].ToString();
                        macs.Add(mac);
                    }
                }
                moc = null;
                mc = null;
            }
            catch
            {
            }

            return macs;
        }

        /// <summary>
        ///  获取网卡硬件地址
        /// </summary>
        /// <returns></returns>
        public static string GetComputerUserName()
        {
            try
            {
                string st = "";
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    st = mo["UserName"].ToString();
                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }
            finally
            {

            }

        }

        /// <summary>
        /// 获得客户端外网IP地址
        /// </summary>
        /// <returns>IP地址</returns>
        public static string getClientInternetIPAddress()
        {

            string internetAddress = "";
            try
            {
                using (WebClient webClient = new WebClient())
                {
                    internetAddress = webClient.DownloadString("http://www.coridc.com/ip");//从外部网页获得IP地址
                    //判断IP是否合法
                    if (!System.Text.RegularExpressions.Regex.IsMatch(internetAddress, "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}"))
                    {
                        internetAddress = webClient.DownloadString("http://fw.qq.com/ipaddress");//从腾讯提供的API中获得IP地址
                    }
                }
                return "外网IP地址:" + internetAddress;
            }
            catch
            {
                return "外网IP地址:unknown";
            }

            finally

            {



            }

        }


        /// <summary>
        /// //获取硬盘ID
        /// </summary>
        /// <returns></returns>
        public static string GetDiskID()
        {
            try
            {
                String HDid = "";
                ManagementClass mc = new ManagementClass("Win32_DiskDrive");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    //HDid =(string)mo.Properties["Model"].ToString();
                    HDid = (String)mo.Properties["Model"].Value.ToString();
                }
                moc = null;
                mc = null;
                return HDid;
            }
            catch
            {
                return "unknow";
            }
            finally
            {


            }

        }


        /// <summary>
        /// 获取CPUid
        /// </summary>
        /// <returns></returns>
        public static string GetCpuID()

        {

            try

            {

                //获取CPU序列号代码

                string cpuInfo = "";//cpu序列号
                ManagementClass mc = new ManagementClass("Win32_Processor");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
                }

                moc = null;
                mc = null;
                return cpuInfo;

            }
            catch
            {
                return "unknow";
            }

            finally

            {



            }

        }


        /// <summary>
        /// 系统名称
        /// </summary>
        /// <returns></returns>
        public static string GetSystemType()

        {

            try

            {
                string st = "";
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    st = mo["SystemType"].ToString();
                }

                moc = null;
                mc = null;
                return st;

            }
            catch
            {
                return "unknow";
            }

            finally
            {

            }

        }

    }
}

 

posted @ 2022-11-15 01:35  小林野夫  阅读(3183)  评论(0编辑  收藏  举报
原文链接:https://www.cnblogs.com/cdaniu/