所谓系统信息,就是计算机的软件硬件信息,硬件如CPU主频、网卡名称等,软件信息就如操作系统目录,用户目录等。在平常的编程中,我们往往要用到这些系统信息,比如我前面的字体查看器,如果要写个C#版,则首先要获得系统字体的安装目录。总之,读取系统信息对于编程还是很重要的,.NET也不负所望,提供了很便利的方法,本文提供了四种方法来从各个方面对系统信息进行读取。
第一种方法 : 用 SystemInformation 类
//DllImport方法所需要的包:
using System.Runtime.InteropServices;
//StringBuilder所需要的包:
using System.Text;
//声明API函数
[DllImport("kernel32")]
public static extern void GetWindowsDirectory(StringBuilder WinDir,int count);
[DllImport("kernel32")]
public static extern void GetSystemDirectory(StringBuilder SysDir,int count);
[DllImport("kernel32")]
public static extern void GetSystemInfo(ref CPU_INFO cpuinfo);
[DllImport("kernel32")]
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
[DllImport("kernel32")]
public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo);
//定义以下各结构
//定义CPU的信息结构
[StructLayout(LayoutKind.Se
第一种方法 : 用 SystemInformation 类
SystemInformation 提供静态方法和属性,它们可用于获取诸如 Windows 显示元素大小、操作系统设置、网络可用性和系统中所安装硬件的性能等信息,这种方法侧重于操作系统(这里特指Windows)的一些设置和状态。
第二种方法 : 用Environment 类通过这种方法可检索的系统信息包括命令行参数、环境变量设置、调用堆栈的内容、上次系统引导以来的时间,以及公共语言运行库的版本等等,测重于使用这个类的应用程序所处的环境和状态,也有比较多的动态信息,比如开机启动后的毫秒数等等。
第三种方法 用RegistryKey 类这种方法方法读取的也只能是静态的设置,不过比上面两种方法更加接近操作系统,因为值是直接从注册表中读取出来的,有好处也有不好的地方,好处就是基本上可以获得任何设置。不好的地方是不够便利,毕竟,检索注册表的键值不如直接调用方法来得方便。
第四种方法 用API 函数这种方法严格说来不是用C#来实现对系统信息的读取,因为它实际调用的是系统API。这种方法有更加有意义的地方,就在其对API功能的调用,因而我们可以做出更多的事情。这种方法也可以在Java中依样画胡芦地用到。
下面讲一下程序结构:
//RegistryKey 类所需要的包:
using Microsoft.Win32;//DllImport方法所需要的包:
using System.Runtime.InteropServices;
//StringBuilder所需要的包:
using System.Text;
//声明API函数
[DllImport("kernel32")]
public static extern void GetWindowsDirectory(StringBuilder WinDir,int count);
[DllImport("kernel32")]
public static extern void GetSystemDirectory(StringBuilder SysDir,int count);
[DllImport("kernel32")]
public static extern void GetSystemInfo(ref CPU_INFO cpuinfo);
[DllImport("kernel32")]
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo);
[DllImport("kernel32")]
public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo);
//定义以下各结构
//定义CPU的信息结构
[StructLayout(LayoutKind.Se

本文介绍如何利用SystemInformation类和系统API在C#中获取Windows操作系统的各种信息,如显示元素大小、操作系统设置、硬件性能等。内容涵盖了从静态设置到动态状态的多种信息获取方式,并探讨了直接读取注册表和调用API的优缺点。

3498

被折叠的 条评论
为什么被折叠?



