C#获取电脑的相关信息

来源:互联网 发布:电脑语音输入软件 编辑:程序博客网 时间:2024/04/30 08:57

/* 创建者:菜刀居士的博客
 * 创建日期: 2014年08月31号
 * 功能:获取电脑的相关信息
 *
 */

namespace Net.String.ConsoleApplication
{
    using System;
    using System.Management;

    public class ComputerHelper
    {
        /// <summary>
        /// 获取CPU序列号代码
        /// </summary>
        public static string GetCPUId()
        {
            return ExecInfo(() => {
                ManagementClass mc = new ManagementClass("Win32_Processor");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    return mo.Properties["ProcessorId"].Value.ToString();
                }
                return string.Empty;
            });
        }

        /// <summary>
        /// 获取网卡Mac地址
        /// </summary>
        public static string GetMacAddress()
        {
            return ExecInfo(() => {
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"] == true)
                    {
                        return mo["MacAddress"].ToString();
                    }
                }
                return string.Empty;
            });
        }

        /// <summary>
        /// 获取硬盘ID
        /// </summary>
        public static string GetDiskID()
        {
            return ExecInfo(() => {
                ManagementClass mc = new ManagementClass("Win32_DiskDrive");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    return (string)mo.Properties["Model"].Value;
                }
                return string.Empty;
            });
        }

        /// <summary>
        /// 操作系统的登录用户名
        /// </summary>
        public static string GetUserName()
        {
            return ExecInfo(() => {
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    return mo["UserName"].ToString();
                }
                return string.Empty;
            }); 
        }

        /// <summary>
        /// PC类型
        /// </summary>
        public static string GetSystemType()
        {
            return ExecInfo(() =>
            {
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    return mo["SystemType"].ToString();
                }
                return string.Empty;
            });
        }

        /// <summary>
        /// 物理内存
        /// </summary>
        public static string GetTotalPhysicalMemory()
        {
            return ExecInfo(() =>
            {
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    return mo["TotalPhysicalMemory"].ToString();
                }
                return string.Empty;
            });
        }

        /// <summary>
        /// 计算机名称
        /// </summary>
        public static string GetComputerName()
        {
            return ExecInfo(() => {
                return System.Environment.GetEnvironmentVariable("ComputerName");
            });
        }

        private static string ExecInfo(Func<string> func)
        {
            string result = string.Empty;
            try
            {
                result = func();
            }
            catch
            {
                return "unknow";
            }
            finally { }
            return result;
        }

        /// <summary>
        /// 得到客户端IP地址
        /// </summary>
        public string GetClientIdAddress()
        {
            string ip = string.Empty;
            try
            {
                if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_ForWARDED_For"] == null)
                    ip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
                else
                    ip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_ForWARDED_For"].ToString();

                if (string.IsNullOrEmpty(ip))
                {
                    ip = System.Web.HttpContext.Current.Request.UserHostAddress;
                }
            }
            catch { ip = "1.1.1.1"; }
            return ip;
        }
   
       
    }
}

0 1