用C#获取CPU编号、硬盘编号等系统有关环境、属性

如果利用C#获取系统有关环境和属性,这个也是在网上问得比较多的问题,不过大部分只有提问没有回答,最近正好想做有关方面的东西,整理了一下,提供给大家,希望能给大家提供参考意见:

首先需要定义几个结构(struct) ,便于DllImport作为返回参数调用。以下是代码:

CpuInfo.cs

using System;
using System.Configuration;
using System.Runtime.InteropServices;

/**//**
* LayoutKind.Automatic:为了提高效率允许运行态对类型成员重新排序
* 注意:永远不要使用这个选项来调用不受管辖的动态链接库函数。
* LayoutKind.Explicit:对每个域按照FieldOffset属性对类型成员排序
* LayoutKind.Sequential:对出现在受管辖类型定义地方的不受管辖内存中的类型成员进行排序。
*/
/**//// <summary>
/// 定义CPU的信息结构
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct CpuInfo
...{
/**//// <summary>
/// OEM ID
/// </summary>
public uint dwOemId;
/**//// <summary>
/// 页面大小
/// </summary>
public uint dwPageSize;
public uint lpMinimumApplicationAddress;
public uint lpMaximumApplicationAddress;
public uint dwActiveProcessorMask;
/**//// <summary>
/// CPU个数
/// </summary>
public uint dwNumberOfProcessors;
/**//// <summary>
/// CPU类型
/// </summary>
public uint dwProcessorType;
public uint dwAllocationGranularity;
/**//// <summary>
/// CPU等级
/// </summary>
public uint dwProcessorLevel;
public uint dwProcessorRevision;
}
MemoryInfo.cs
using System;
using System.Configuration;
using System.Runtime.InteropServices;

/**//**
* LayoutKind.Automatic:为了提高效率允许运行态对类型成员重新排序
* 注意:永远不要使用这个选项来调用不受管辖的动态链接库函数。
* LayoutKind.Explicit:对每个域按照FieldOffset属性对类型成员排序
* LayoutKind.Sequential:对出现在受管辖类型定义地方的不受管辖内存中的类型成员进行排序。
*/
/**//// <summary>
/// 定义内存的信息结构
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct MemoryInfo
...{
/**//// <summary>
///
/// </summary>
public uint dwLength;
/**//// <summary>
/// 已经使用的内存
/// </summary>
public uint dwMemoryLoad;
/**//// <summary>
/// 总物理内存大小
/// </summary>
public uint dwTotalPhys;
/**//// <summary>
/// 可用物理内存大小
/// </summary>
public uint dwAvailPhys;
/**//// <summary>
/// 交换文件总大小
/// </summary>
public uint dwTotalPageFile;
/**//// <summary>
/// 可用交换文件大小
/// </summary>
public uint dwAvailPageFile;
/**//// <summary>
/// 总虚拟内存大小
/// </summary>
public uint dwTotalVirtual;
/**//// <summary>
/// 可用虚拟内存大小
/// </summary>
public uint dwAvailVirtual;
}
SystemTimeInfo.cs
using System;
using System.Configuration;
using System.Runtime.InteropServices;

/**//**
* LayoutKind.Automatic:为了提高效率允许运行态对类型成员重新排序
* 注意:永远不要使用这个选项来调用不受管辖的动态链接库函数。
* LayoutKind.Explicit:对每个域按照FieldOffset属性对类型成员排序
* LayoutKind.Sequential:对出现在受管辖类型定义地方的不受管辖内存中的类型成员进行排序。
*/
/**//// <summary>
/// 定义系统时间的信息结构
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct SystemTimeInfo
...{
/**//// <summary>
/// 年
/// </summary>
public ushort wYear;
/**//// <summary>
/// 月
/// </summary>
public ushort wMonth;
/**//// <summary>
/// 星期
/// </summary>
public ushort wDayOfWeek;
/**//// <summary>
/// 天
/// </summary>
public ushort wDay;
/**//// <summary>
/// 小时
/// </summary>
public ushort wHour;
/**//// <summary>
/// 分钟
/// </summary>
public ushort wMinute;
/**//// <summary>
/// 秒
/// </summary>
public ushort wSecond;
/**//// <summary>
/// 毫秒
/// </summary>
public ushort wMilliseconds;
}

时间: 2024-12-30 16:31:31

用C#获取CPU编号、硬盘编号等系统有关环境、属性的相关文章

我使用WEB,如何在程序中,获取CPU、硬盘、IP地址及其它信息?

问题描述 我使用WEB,如何在程序中,获取CPU.硬盘.IP地址及其它信息? 解决方案 解决方案二:获取Server上的信息?先找到本地命令,能看到这些信息的,然后在程序中用Runtime.exec(去执行这些本地命令.解决方案三:估计他想获得用户的这些信息!如果是这样的话,想都不用想了!解决方案四:IP地址能获取当客户端的其它信息通过java是没办法的不晓得别的技术能行不webstart方式运行的客户端还行web方式的话active插件不晓得可以不(纯粹猜测,没用过)解决方案五:用户的这些信息

C#获取机器码的方法详解(机器名,CPU编号,硬盘编号,网卡mac等)_C#教程

本文实例讲述了C#获取机器码的方法.分享给大家供大家参考,具体如下: using System.Runtime.InteropServices; using System.Management; using System; public class HardwareInfo { //取机器名 public string GetHostName() { return System.Net.Dns.GetHostName(); } //取CPU编号 public String GetCpuID()

用C#获取CPU的ID编号

System.Management命名空间提供对大量管理信息和管理事件集合的访问,这些信息和事件是与根据 Windows 管理规范 (WMI) 结构对系统.设备和应用程序设置检测点有关的.应用程序和服务可以使用从 ManagementObjectSearcher 和 ManagementQuery 派生的类,查询感兴趣的管理信息(例如在磁盘上还剩多少可用空间.当前 CPU 利用率是多少.某一应用程序正连接到哪一数据库等等):或者应用程序和服务可以使用 ManagementEventWatcher

使用C#获取CPU及硬盘序列号的源代码

首先需添加对System.Management的引用. view plaincopy to clipboardprint? using System;     using System.Runtime.InteropServices;     using System.Management;        namespace Hardware     {         /// <summary>         /// HardwareInfo 的摘要说明.         /// <

ASP.NET获取CPU序列号,硬盘序列号ID,获取网卡编号

asp.net|硬盘 public static void GetCpuInfo(out string cpuInfo) { //得到cpu信息 string _cpuInfo="";//cpu信息 ManagementClass cimobject = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = cimobject.GetInstances(); foreach(

C#应用:获取cpu序列号,硬盘ID,网卡MAC地址

硬盘 private void GetInfo()  {   string cpuInfo = "";//cpu序列号   ManagementClass cimobject = new ManagementClass("Win32_Processor");   ManagementObjectCollection moc = cimobject.GetInstances();   foreach(ManagementObject mo in moc)   {   

VB.net获取CPU与硬盘物理序列号与容量的实例

首先,引用System.Management:然后在代码中Imports System.Management: 以下功能主要依靠wmi实现 获得硬盘序列号  代码如下 复制代码 Dim cmicWmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") Dim Uint32 As UInt32 For Each cmicWmiObj As ManagementObject

如何开发获取当前计算机cpu,内存,硬盘,进程,网络流量等使用率或传输情况

问题描述 如何开发获取当前计算机cpu,内存,硬盘,进程,网络流量等使用率或传输情况 如何开发获取当前计算机cpu,内存,硬盘,进程,网络流量等使用率或传输情况,参考什么书籍或知识点! 解决方案 http://download.csdn.net/detail/ww516617119/7178777 解决方案二: google wmi 性能计数器 <你用的语言> 结果就有了 解决方案三: 楼上这个连接有点厉害,我觉的吧得深入了解win32 sdk,学的快的话,还是调用别人的库 解决方案四: WM

java-怎样才能获取全部的课程编号,和原因一起发送过去,我现在只能获取到一个?

问题描述 怎样才能获取全部的课程编号,和原因一起发送过去,我现在只能获取到一个? 解决方案 遍历,获取到所有数据集合,如果你有使用strust等框架,可以和后台通过List交互 解决方案二: 你是要用jquery来获取table中的课程编号项吗?直接根据标签td获取就行了 解决方案三: 你可以在课程名称所在td加上class="courseName";之后通过$(".courseName")获取到所有的课程名称所在列之后遍历.获取文本就可以了