using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management; namespace IPMACDemo
{
class Program
{
static void Main(string[] args)
{ Console.WriteLine("计算机名称:{0}",GetComputerName());
Console.WriteLine("操作系统:{0}", GetSystemType());
Console.WriteLine("用户名:{0}", GetUserName());
Console.WriteLine("计算机MAC地址:{0}", GetMacAddress());
Console.WriteLine("计算机IP地址:{0}", GetIpAddress()); Console.WriteLine("硬盘序列号:{0}", GetDiskSerialNumber());
Console.WriteLine("硬盘大小:{0}", Convert.ToDouble(GetSizeOfDisk()) /(**)); Console.WriteLine("网卡地址:{0}", GetMacAddress());
Console.WriteLine("显卡PNPDeviceID:{0}", GetVideoPnpid());
Console.WriteLine("声卡PNPDeviceID :{0}", GetSoundPnpid()); Console.WriteLine("主板制造商:{0}", GetBoardManufacturer());
Console.WriteLine("主板编号:{0}", GetBoardId());
Console.WriteLine("主板型号:{0}", GetBoardType()); Console.WriteLine("CPU名称:{0}", GetCpuName());
Console.WriteLine("CPU数量:{0}", GetCpuCount());
Console.WriteLine("CPU编号:{0}", GetCpuid());
Console.WriteLine("CPU版本信息:{0}", GetCpuVersion());
Console.WriteLine("CPU制造商:{0}", GetCpuManufacturer()); Console.WriteLine("物理内存:{0}", Convert.ToDouble(GetPhysicalMemory()) / ( * * )); Console.ReadLine(); } #region CPU
/// <summary>
/// 获取CPU的频率 这里之所以使用string类型的数组,主要是因为cpu的多核
/// </summary>
/// <returns></returns>
public static string[] GetCpuMHZ()
{
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection cpus = mc.GetInstances(); string[] mHz = new string[cpus.Count];
int c = ;
ManagementObjectSearcher mySearch = new ManagementObjectSearcher("select * from Win32_Processor");
foreach (ManagementObject mo in mySearch.Get())
{
mHz[c] = mo.Properties["CurrentClockSpeed"].Value.ToString();
c++;
}
mc.Dispose();
mySearch.Dispose();
return mHz;
} /// <summary>
/// 获取CPU的个数
/// </summary>
/// <returns></returns>
public static int GetCpuCount()
{
try
{
using (ManagementClass mCpu = new ManagementClass("Win32_Processor"))
{
ManagementObjectCollection cpus = mCpu.GetInstances();
return cpus.Count;
}
}
catch
{
}
return -;
} /// <summary>
/// 获得CPU编号
/// </summary>
/// <returns></returns>
public static string GetCpuid()
{
var cpuid = string.Empty;
var mc = new ManagementClass("Win32_Processor");
var moc = mc.GetInstances();
foreach (var o in moc)
{
var mo = (ManagementObject)o;
cpuid = mo.Properties["ProcessorId"].Value.ToString();
}
return cpuid;
} /// <summary>
/// CPU版本信息
/// </summary>
/// <returns></returns>
public static string GetCpuVersion()
{
var st = string.Empty;
var mos = new ManagementObjectSearcher("Select * from Win32_Processor");
foreach (var o in mos.Get())
{
var mo = (ManagementObject)o;
st = mo["Version"].ToString();
}
return st;
} /// <summary>
/// CPU名称信息
/// </summary>
/// <returns></returns>
public static string GetCpuName()
{
var st = string.Empty;
var driveId = new ManagementObjectSearcher("Select * from Win32_Processor");
foreach (var o in driveId.Get())
{
var mo = (ManagementObject)o;
st = mo["Name"].ToString();
}
return st;
} /// <summary>
/// CPU制造厂商
/// </summary>
/// <returns></returns>
public static string GetCpuManufacturer()
{
var st = string.Empty;
var mos = new ManagementObjectSearcher("Select * from Win32_Processor");
foreach (var o in mos.Get())
{
var mo = (ManagementObject)o;
st = mo["Manufacturer"].ToString();
}
return st;
}
#endregion #region 主板
/// <summary>
/// 主板制造厂商
/// </summary>
/// <returns></returns>
public static string GetBoardManufacturer()
{
var query = new SelectQuery("Select * from Win32_BaseBoard");
var mos = new ManagementObjectSearcher(query);
var data = mos.Get().GetEnumerator();
data.MoveNext();
var board = data.Current;
return board.GetPropertyValue("Manufacturer").ToString();
} /// <summary>
/// 主板编号
/// </summary>
/// <returns></returns>
public static string GetBoardId()
{
var st = string.Empty;
var mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");
foreach (var o in mos.Get())
{
var mo = (ManagementObject)o;
st = mo["SerialNumber"].ToString();
}
return st;
} /// <summary>
/// 主板型号
/// </summary>
/// <returns></returns>
public static string GetBoardType()
{
var st = string.Empty;
var mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard");
foreach (var o in mos.Get())
{
var mo = (ManagementObject)o;
st = mo["Product"].ToString();
}
return st;
} #endregion #region 网卡,声卡,显卡
/// <summary>
/// 获取网卡硬件地址
/// </summary>
/// <returns></returns>
public static string GetMacAddress()
{
var mac = "";
var mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
var moc = mc.GetInstances();
foreach (var o in moc)
{
var mo = (ManagementObject)o;
if (!(bool)mo["IPEnabled"]) continue;
mac = mo["MacAddress"].ToString();
break;
}
return mac;
} /// <summary>
/// 显卡PNPDeviceID
/// </summary>
/// <returns></returns>
public static string GetVideoPnpid()
{
var st = "";
var mos = new ManagementObjectSearcher("Select * from Win32_VideoController");
foreach (var o in mos.Get())
{
var mo = (ManagementObject)o;
st = mo["PNPDeviceID"].ToString();
}
return st;
} /// <summary>
/// 声卡PNPDeviceID
/// </summary>
/// <returns></returns>
public static string GetSoundPnpid()
{
var st = string.Empty;
var mos = new ManagementObjectSearcher("Select * from Win32_SoundDevice");
foreach (var o in mos.Get())
{
var mo = (ManagementObject)o;
st = mo["PNPDeviceID"].ToString();
}
return st;
}
#endregion /// <summary>
/// 获取硬盘序列号
/// </summary>
/// <returns></returns>
public static string GetDiskSerialNumber()
{
//这种模式在插入一个U盘后可能会有不同的结果,如插入我的手机时
var hDid = string.Empty;
var mc = new ManagementClass("Win32_DiskDrive");
var moc = mc.GetInstances();
foreach (var o in moc)
{
var mo = (ManagementObject)o;
hDid = (string)mo.Properties["Model"].Value;
//这名话解决有多个物理盘时产生的问题,只取第一个物理硬盘
break;
}
return hDid;
} /// <summary>
/// 获取硬盘的大小
/// </summary>
/// <returns></returns>
public static string GetSizeOfDisk()
{
ManagementClass mc = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moj = mc.GetInstances();
foreach (ManagementObject m in moj)
{
return m.Properties["Size"].Value.ToString();
}
return "-1";
} /// <summary>
/// 物理内存
/// </summary>
/// <returns></returns>
public static string GetPhysicalMemory()
{
var st = string.Empty;
var mc = new ManagementClass("Win32_ComputerSystem");
var moc = mc.GetInstances();
foreach (var o in moc)
{
var mo = (ManagementObject)o;
st = mo["TotalPhysicalMemory"].ToString();
}
return st;
} /// <summary>
/// 获取IP地址
/// </summary>
/// <returns></returns>
public static string GetIpAddress()
{
var st = string.Empty;
var mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
var moc = mc.GetInstances();
foreach (var o in moc)
{
var mo = (ManagementObject)o;
if (!(bool)mo["IPEnabled"]) continue;
var ar = (Array)(mo.Properties["IpAddress"].Value);
st = ar.GetValue().ToString();
break;
}
return st;
} /// <summary>
/// 操作系统的登录用户名
/// </summary>
/// <returns></returns>
public static string GetUserName()
{
return Environment.UserName;
} /// <summary>
/// 获取计算机名
/// </summary>
/// <returns></returns>
public static string GetComputerName()
{
return Environment.MachineName;
} /// <summary>
/// 操作系统类型
/// </summary>
/// <returns></returns>
public static string GetSystemType()
{
var st = string.Empty;
var mc = new ManagementClass("Win32_ComputerSystem");
var moc = mc.GetInstances();
foreach (var o in moc)
{
var mo = (ManagementObject)o;
st = mo["SystemType"].ToString();
}
return st;
}
}
}

Management的更多相关文章

  1. SQL Server Management Studio 无法修改表,超时时间已到 在操作完成之前超时时

    在修改表时,保存的时候显示:无法修改表,超时时间已到 在操作完成之前超时时间已过或服务器未响应 这是执行时间设置过短的原因,可以修改一下设置便能把执行时间加长,以便有足够的时间执行完修改动作. 在 S ...

  2. Java Business Process Management(业务流程管理) 初识环境搭建

    一.简介 (一)什么是jbpm JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易 ...

  3. Power Management开发的一般流程

    本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富. 开发流程 针对一个PM feature进行开发,设计模型是第一步.模型设计好之后,还要保留参数接口,可以基于这些参数针对特殊个体进行优化. ...

  4. sqlserver2008附加数据库时提示“无法为该请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc)”

    解决方案: 右击SQL Server Management Studio以管理员身份运行,选择与脱机数据库时相同的登陆方式(win还是sa),进入后再附加就是ok了.

  5. Information Management Policy(信息管理策略)的使用范例

    基础知识 很多人都会定期收拾自己的书架或者抽屉,把里面过旧的资料拿走,为新的资料腾出空间来,这样既可以节省空间,而且当冗余资料过多的时候也会降低你查找的速度和效率.那么,在企业的SharePoint中 ...

  6. 禁用SQL Server Management Studio的IntelliSense

    禁用SQL Server Management Studio的IntelliSense 本文版权归作者所有,未经作者同意不得转载.

  7. Policy Management

    策略管理用于管理数据库实例.数据库以及数据库对象的各种属性,Policy Management 位于Management Catalog下, 一,Basic concepts 引用园子里深蓝的博客&l ...

  8. 开源WinForms界面开发框架Management Studio 选项卡文档 插件 Office 2007蓝色风格 后台线程

    Management Studio是我在WinForms小项目开发过程中搭建起来的一个插件式结构的应用程序框架,因为简单灵活又容易扩展,现在将它开源供读者参考. 跑起来的效果图如下所示,具备选项卡式多 ...

  9. Sql Server系列:Microsoft SQL Server Management Studio模板资源管理器

    模板资源管理器是Microsoft SQL Server Management Studio的一个组件,可以用来SQL代码模板,使用模板提供的代码,省去每次都要输入基本代码的工作. 使用模板资源管理器 ...

  10. Memory Management in Open Cascade

    Open Cascade中的内存管理 Memory Management in Open Cascade eryar@163.com 一.C++中的内存管理 Memory Management in ...

随机推荐

  1. jquery动态创建元素 div元素随垂直滚动条位置变化置顶显示

    刚打开页面效果 拖动滑动条之后效果 页面代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  2. LeetCode OJ:Bulls and Cows (公牛与母牛)

    You are playing the following Bulls and Cows game with your friend: You write down a number and ask ...

  3. MoreEffectiveC++Item35(操作符)(条款5-8)

    条款5 对定制的"类型转换函数"保持警惕 条款6 区别increment/decrement操作符的前值和后置形式 条款7 千万不要重载&&,||,和,操作符 条款 ...

  4. 在ROS Kinetic中使用Gazebo 8进行机器人仿真

    在ROS Kinetic中使用Gazebo 8比在ROS Indigo中使用Gazebo 3-8要容易一些. 目前最新稳定版本的Gazebo8为8.1.1. 安装流程如下: $  sudo apt-g ...

  5. MongoDB使用笔记

    先创建目录,创建log文件,然后启动服务 cd /d D:\Program Files\MongoDB\Server\3.4\bin\ mongod.exe --dbpath d:\data\db - ...

  6. yxy-插入formid-并发/压力(入参的变量化)

    1.抓取接口如下 2.该接口为插入数据库操作,由于前段操作频繁,就简单压测一下 接口中formId.accountId.openId为变量 formId为随机生成插入:accountId.openId ...

  7. openssl指定证书密码建立连接

    下面是server 和client 的代码.用没跑过,但是用类似的代码跑了.流程是这样的.要注意的是openssl中ssl连接建立前用阻塞的socket,建立后可以设置非阻塞.openssl每个操作后 ...

  8. (转)读懂diff

    http://www.ruanyifeng.com/blog/2012/08/how_to_read_diff.html diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异, ...

  9. 基于 od 窗口的anti

    虽然 odadvance 这类的插件 , 使用驱动将 od 的窗口 进行 隐藏,使用enumwindow ,无法枚举到od的窗口, 但是依然可以 使用r3 的方法 , 对od 窗口检测 之后可以使用 ...

  10. THREE.OrbitControls参数控制

    // Set to false to disable this control//鼠标控制是否可用 this.enabled = true; // "target" sets th ...