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

C#获取操作系统版本信息 C# 实现获取操作系统的版本信息; 操作系统版本信息 立即下载

本文在ASP.NET程序中实现了获取CPU编号、硬盘编号等与系统有关环境属性,这个方法也可以移植到其他程序当中。 CpuInfo.cs using System; using System.Configuration; using System.Runtime.InteropServices; /**//** * LayoutKind.Automatic:为了提高效率允许运行态对类型成员重新排序 * 注意:永远不要使用这个选项来调用不受管辖的动态链接库函数。 * LayoutKind.Explicit:对每个域按照FieldOffset属性对类型成员排序 * LayoutKind.Sequential:对出现在受管辖类型定义地方的不受管辖内存中的类型成员进行排序。 */ /**//// /// 定义CPU的信息结构 /// [StructLayout(LayoutKind.Sequential)] public struct CpuInfo ...{ /**//// /// OEM ID /// public uint dwOemId; /**//// /// 页面大小 /// public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; /**//// /// CPU个数 /// public uint dwNumberOfProcessors; /**//// /// CPU类型 /// public uint dwProcessorType; public uint dwAllocationGranularity; /**//// /// CPU等级 /// public uint dwProcessorLevel; public uint dwProcessorRevision; } MemoryInfo.cs using System; using System.Configuration; using System.Runtime.InteropServices; /**//** * LayoutKind.Automatic:为了提高效率允许运行态对类型成员重新排序 * 注意:永远不要使用这个选项来调用不受管辖的动态链接库函数。 * LayoutKind.Explicit:对每个域按照FieldOffset属性对类型成员排序 * LayoutKind.Sequential:对出现在受管辖类型定义地方的不受管辖内存中的类型成员进行排序。 */ /**//// /// 定义内存的信息结构 /// [StructLayout(LayoutKind.Sequential)] public struct MemoryInfo ...{ /**//// /// /// public uint dwLength; /**//// /// 已经使用的内存 /// public uint dwMemoryLoad; /**//// /// 总物理内存大小 /// public uint dwTotalPhys; /**//// /// 可用物理内存大小 /// public uint dwAvailPhys; /**//// /// 交换文件总大小 /// public uint dwTotalPageFile; /**//// /// 可用交换文件大小 /// public uint dwAvailPageFile; /**//// /// 总虚拟内存大小 /// public uint dwTotalVirtual; /**//// /// 可用虚拟内存大小 /// public uint dwAvailVirtual; } SystemTimeInfo.cs using System; using System.Configuration; using System.Runtime.InteropServices; /**//** * LayoutKind.Automatic:为了提高效率允许运行态对类型成员重新排序 * 注意:永远不要使用这个选项来调用不受管辖的动态链接库函数。 * LayoutKind.Explicit:对每个域按照FieldOffset属性对类型成员排序 * LayoutKind.Sequential:对出现在受管辖类型定义地方的不受管辖内存中的类型成员进行排序。 */ /**//// /// 定义系统时间的信息结构 /// [StructLayout(LayoutKind.Sequential)] public struct SystemTimeInfo ...{ /**//// /// 年 /// public ushort wYear; /**//// /// 月 /// public ushort wMonth; /**//// /// 星期 /// public ushort wDayOfWeek; /**//// /// 天 /// public ushort wDay; /**//// /// 小时 /// public ushort wHour; /**//// /// 分钟 /// public ushort wMinute; /**//// /// 秒 /// public ushort wSecond; /**//// /// 毫秒 /// public ushort wMilliseconds; } 另外还定义了一个调用类SystemInfo.cs,代码如下: using System; using System.Configuration; using System.Runtime.InteropServices; using System.Management; using System.Text; /**//// /// SystemInfo 的摘要说明 /// public class SystemInfo ...{ private const int CHAR_COUNT = 128; public SystemInfo() ...{ } [DllImport("kernel32")] private static extern void GetWindowsDirectory(StringBuilder WinDir, int count); [DllImport("kernel32")] private static extern void GetSystemDirectory(StringBuilder SysDir, int count); [DllImport("kernel32")] private static extern void GetSystemInfo(ref CpuInfo cpuInfo); [DllImport("kernel32")] private static extern void GlobalMemoryStatus(ref MemoryInfo memInfo); [DllImport("kernel32")] private static extern void GetSystemTime(ref SystemTimeInfo sysInfo); /**//// /// 查询CPU编号 /// /// public string GetCpuId() ...{ ManagementClass mClass = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mClass.GetInstances(); string cpuId=null; foreach (ManagementObject mo in moc) ...{ cpuId = mo.Properties["ProcessorId"].Value.ToString(); break; } return cpuId; } /**//// /// 查询硬盘编号 /// /// public string GetMainHardDiskId() ...{ ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); String hardDiskID=null; foreach (ManagementObject mo in searcher.Get()) ...{ hardDiskID = mo["SerialNumber"].ToString().Trim(); break; } return hardDiskID; } /**//// /// 获取Windows目录 /// /// public string GetWinDirectory() ...{ StringBuilder sBuilder = new StringBuilder(CHAR_COUNT); GetWindowsDirectory(sBuilder, CHAR_COUNT); return sBuilder.ToString(); } /**//// /// 获取系统目录 /// /// public string GetSysDirectory() ...{ StringBuilder sBuilder = new StringBuilder(CHAR_COUNT); GetSystemDirectory(sBuilder, CHAR_COUNT); return sBuilder.ToString(); } /**//// /// 获取CPU信息 /// /// public CpuInfo GetCpuInfo() ...{ CpuInfo cpuInfo = new CpuInfo(); GetSystemInfo(ref cpuInfo); return cpuInfo; } /**//// /// 获取系统内存信息 /// /// public MemoryInfo GetMemoryInfo() ...{ MemoryInfo memoryInfo = new MemoryInfo(); GlobalMemoryStatus(ref memoryInfo); return memoryInfo; } /**//// /// 获取系统时间信息 /// /// public SystemTimeInfo GetSystemTimeInfo() ...{ SystemTimeInfo systemTimeInfo = new SystemTimeInfo(); GetSystemTime(ref systemTimeInfo); return systemTimeInfo; } /**//// /// 获取系统名称 /// /// public string GetOperationSystemInName() ...{ OperatingSystem os = System.Environment.OSVersion; string osName = "UNKNOWN"; switch (os.Platform) ...{ case PlatformID.Win32Windows: switch (os.Version.Minor) ...{ case 0: osName = "Windows 95"; break; case 10: osName = "Windows 98"; break; case 90: osName = "Windows ME"; break; } break; case PlatformID.Win32NT: switch (os.Version.Major) ...{ case 3: osName = "Windws NT 3.51"; break; case 4: osName = "Windows NT 4"; break; case 5: if (os.Version.Minor == 0) ...{ osName = "Windows 2000"; } else if (os.Version.Minor == 1) ...{ osName = "Windows XP"; } else if (os.Version.Minor == 2) ...{ osName = "Windows Server 2003"; } break; case 6: osName = "Longhorn"; break; } break; } return String.Format("{0},{1}", osName, os.Version.ToString()); } } 以下是调用实例,为了简单,我在一个aspx页面中输出,不过这个程序可以在WinForm中调用: using System; using System.Data; using System.Configuration; using System.Collections; using System.Collections.Specialized; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Runtime.InteropServices; public partial class Index : System.Web.UI.Page ...{ protected void Page_Load(object sender, EventArgs e) ...{ if (!Page.IsPostBack) ...{ SystemInfo systemInfo = new SystemInfo(); Response.Write("操作系统:" + systemInfo.GetOperationSystemInName() + "
"); Response.Write("CPU编号:"+systemInfo.GetCpuId() + "
"); Response.Write("硬盘编号:"+systemInfo.GetMainHardDiskId() + "
"); Response.Write("Windows目录所在位置:" + systemInfo.GetSysDirectory() + "
"); Response.Write("系统目录所在位置:" + systemInfo.GetWinDirectory() + "
"); MemoryInfo memoryInfo = systemInfo.GetMemoryInfo(); CpuInfo cpuInfo = systemInfo.GetCpuInfo(); Response.Write("dwActiveProcessorMask" + cpuInfo.dwActiveProcessorMask + "
"); Response.Write("dwAllocationGranularity" + cpuInfo.dwAllocationGranularity + "
"); Response.Write("CPU个数:" + cpuInfo.dwNumberOfProcessors + "
"); Response.Write("OEM ID:" + cpuInfo.dwOemId + "
"); Response.Write("页面大小" + cpuInfo.dwPageSize + "
"); Response.Write("CPU等级" + cpuInfo.dwProcessorLevel + "
"); Response.Write("dwProcessorRevision" + cpuInfo.dwProcessorRevision + "
"); Response.Write("CPU类型" + cpuInfo.dwProcessorType + "
"); Response.Write("lpMaximumApplicationAddress" + cpuInfo.lpMaximumApplicationAddress + "
"); Response.Write("lpMinimumApplicationAddress" + cpuInfo.lpMinimumApplicationAddress + "
"); Response.Write("CPU类型:" + cpuInfo.dwProcessorType + "
"); Response.Write("可用交换文件大小:" + memoryInfo.dwAvailPageFile + "
"); Response.Write("可用物理内存大小:" + memoryInfo.dwAvailPhys + "
"); Response.Write("可用虚拟内存大小" + memoryInfo.dwAvailVirtual + "
"); Response.Write("操作系统位数:" + memoryInfo.dwLength + "
"); Response.Write("已经使用内存大小:" + memoryInfo.dwMemoryLoad + "
"); Response.Write("交换文件总大小:" + memoryInfo.dwTotalPageFile + "
"); Response.Write("总物理内存大小:" + memoryInfo.dwTotalPhys + "
"); Response.Write("总虚拟内存大小:" + memoryInfo.dwTotalVirtual + "
"); } } } 说明:前台aspx页面没有任何控件。

回归预测 | MATLAB实现MPR多元多项式回归 阅读详情

相关推荐

H5获取手机相机或相册图片两种方式-Android通过webview传递多张照片给H5

H5调用公共获取图片文件方法,在android手机端,H5主要依赖Webview,这边在webview声明并重写该方法onShowFileChooser使用工具类打开相机或相册,可以两种方式安卓原生方式或者利用第三方组件库方式选中图片,返回uri列表给H5H5收到uri照片列表,并且使用前端方式展示创造价值,乐哉分享!

m0_74823947的博客 3096

在C++中使用cpuid指令获得CPU信息 (zz)

1、什么是cpuid指令    CPUID指令是intel IA32架构下获得CPU信息的汇编指令,可以得到CPU类型,型号,制造商信息,商标信息,序列号,缓存等一系列CPU相关的东西。2、cpuid指令的使用    cpuid使用eax作为输入参数,eax,ebx,ecx,edx作为输出参数,举个例子: __asm {  mov eax, 1  cpuid  ... }   

afxid的专栏 6300

Pcileech(DMA)开源项目简述

希望大DMA家能正确认识FPGA,正确使用DMA技术,对于市场上各类伪装成花里胡哨设备的FPGA板卡它的本质是不会变的,不要上当受骗。

2301_79773847的博客 5961

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

如果利用C#获取系统有关环境和属性,这个也是在网上问得比较多的问题,不过大部分只有提问没有回答,最近正好想做有关方面的东西,整理了一下,提供给大家,希望能给大家提供参考意见:首先需要定义几个结构(struct),便于DllImport作为返回参数调用。以下是代码:CpuInfo.cs usingSystem;usingSystem.Configuration;usingSystem....

weixin_30906185的博客 114

Simulink Test Sequence实战:5步搞定复杂逻辑测试(附Excel模板)

本文详细介绍了如何利用Simulink Test Sequence模块高效完成复杂逻辑测试。通过对比传统Excel方法的不足,阐述了Test Sequence以流程图和自然语言描述测试场景的优势,并提供了从环境搭建、逻辑构建到与Test Manager集成、利用Excel模板进行数据驱动的完整5步实战指南,帮助工程师将复杂的状态机或逻辑流测试从繁琐的‘体力活’转变为高效的‘技术活’。

snow3的博客 250

视觉Transformer实战 | 将卷积引入视觉Transformer(CvT)

CvT 是一种融合卷积神经网络与 Vision Transformer 优势的视觉模型,旨在解决 ViT 缺乏平移不变性和局部性等归纳偏置的问题。CvT 采用分层结构逐级降采样,使用卷积词元嵌入代替传统 patch 切分,引入卷积投影替代线性投影。这些设计使得 CvT 能够去除位置编码,在高分辨率输入下表现更优。本节深入解析 CvT 的核心原理,并提供完整的 PyTorch 代码实现,演示如何在实际数据集上训练和评估 CvT 模型。

盼小辉丶的博客 726

C# 获取移动硬盘和U盘信息

获取移动硬盘和U盘信息 1.首先引入名称空间 System.Management 2.示例代码如下 using System; using System.Management; namespace ConsoleApp1 { class Program { static void Main(string[] args) { getExternalDisk(); Console.ReadKey();

cyh的博客 3928

【YOLOv11工业级实战】27. TensorRT量化实战:FP16/INT8极致加速!边缘设备YOLOv11推理速度提升4倍,精度损失控制在1.5%内

摘要:本文针对智慧园区200路摄像头实时分析的工业痛点——RTX 3080单卡仅能处理12路视频流(YOLOv11-nano FP32精度45FPS,需≥120FPS且精度损失≤3%),提供TensorRT量化完整解决方案。从原理解析(FP16/INT8精度差异与量化逻辑)到实操落地(ONNX转换、FP16引擎构建、INT8精细校准),全程给出可复用代码。实测显示:FP16量化后速度达128FPS(×2.8),精度损失0.2%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1719

Win32_DiskDrive 硬盘 参数说明

Availability  --设备的状态。 BytesPerSector  --在每个扇区的物理磁盘驱动器的字节数。 Capabilities  --媒体访问设备的能力阵列。 CapabilityDescriptions  --更详细的解释为任何在功能阵列表示的访问设备的功能的列表 Caption  --对象的序列号 CompressionMethod  --设备所使用的算法或工具,以

yeyingss的专栏 5192

YOLO26改进策略【卷积层】| CVPR 2024 可变形卷积 v4(DCNv4)无界权重提表达 + 线程合并降冗余,强化模型收敛速度

DCNv4(Deformable Convolution v4)是一种专为广泛视觉应用设计的高效算子,它对DCNv3进行了关键改进,有效解决了DCNv3存在的速度慢和表达能力受限等问题。

Limiiiing的博客 693

【WRF-Chem Emissions教程第一期】WRF-Chem 排放概述

WRF-Chem 排放概述

WW、forever的博客 852

C#获取硬盘编号、CPU编号及类型、内存大小及使用情况

如何利用C#获取系统有关环境和属性,这个也是在网上问得比较多的问题,不过大部分只有提问没有回答,最近正好想做有关方面的东西,整理了一下,提供给大家,希望能给大家提供参考意见:首先需要定义几个结构(struct) ,便于DllImport作为返回参数调用。以下是代码:CpuInfo.csusing System;using System.Configuration;using Syste

lvenlee的专栏 1383

【第48例】BLM模型之市场洞察-五看工具篇(一)

BLM市场洞察

产品线负责人 2109

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

用C#获取CPU编号、硬盘编号等系统有关环境、属性 如果利用C#获取系统有关环境和属性,这个也是在网上问得比较多的问题,不过大部分只有提问没有回答,最近正好想做有关方面的东西,整理了一下,提供给大家,希望能给大家提供参考意见: 首先需要定义几个结构(struct) ,便于DllImport作为返回参数调用。以下是代码: CpuInfo.cs using System; using Sys...

weixin_34100227的博客 191

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

如果利用C#获取系统有关环境和属性,这个也是在网上问得比较多的问题,不过大部分只有提问没有回答,最近正好想做有关方面的东西,整理了一下,提供给大家,希望能给大家提供参考意见: 首先需要定义几个结构(struct),便于DllImport作为返回参数调用。以下是代码: CpuInfo.cs usingSystem; usingSystem.Configuration; u...

weixin_30550271的博客 99

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 用C#实现全屏幕截图
下一篇: 利用DirectoryEntry组件来查看网络所有电脑及用户
OnLineStudy
博客等级 码龄16年 12粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值