C# 获取操作系统相关的信息
本文通过一个Demo,讲解如何通过C#获取操作系统相关的信息,如内存大小,CPU大小,机器名,环境变量等操作系统软件、硬件相关信息,仅供学习分享使用,如有不足之处,还请指正。
涉及知识点:
- Environment 提供有关当前环境和平台的信息以及操作它们的方法。
- ManagementClass 表示公共信息模型 (CIM) 管理类。管理类是一个 WMI 类,如 Win32_LogicalDisk 和 Win32_Process,前者表示磁盘驱动器,后者表示进程(如 Notepad.exe)。通过该类的成员,可以使用特定的 WMI 类路径访问 WMI 数据。
效果图
系统信息 :获取如系统目录,平台标识,登录用户名,盘符,所在的域 等信息

环境变量:即操作系统运行的参数,看看有没有眼前为之一亮的信息

特殊目录:桌面,我的文档,收藏夹,等目录,是不是很熟悉

操作系统:以下是获取CPU的信息,如型号,名称,个数,速度,厂商等信息【还可以获取其他如内存,硬盘等信息】

核心代码
代码如下:
namespace DemoEnvironment
{
public partial class MainFrom : Form
{
public MainFrom()
{
InitializeComponent();
} private void MainFrom_Load(object sender, EventArgs e)
{
string machineName = Environment.MachineName;
string osVersionName = GetOsVersion(Environment.OSVersion.Version);
string servicePack = Environment.OSVersion.ServicePack;
osVersionName = osVersionName + " " + servicePack;
string userName = Environment.UserName;
string domainName = Environment.UserDomainName;
string tickCount = (Environment.TickCount / ).ToString() + "s";
string systemPageSize = (Environment.SystemPageSize / ).ToString() + "KB";
string systemDir = Environment.SystemDirectory;
string stackTrace = Environment.StackTrace;
string processorCounter = Environment.ProcessorCount.ToString();
string platform = Environment.OSVersion.Platform.ToString();
string newLine = Environment.NewLine;
bool is64Os = Environment.Is64BitOperatingSystem;
bool is64Process = Environment.Is64BitProcess; string currDir = Environment.CurrentDirectory;
string cmdLine = Environment.CommandLine;
string[] drives = Environment.GetLogicalDrives();
//long workingSet = (Environment.WorkingSet / 1024);
this.lblMachineName.Text = machineName;
this.lblOsVersion.Text = osVersionName;
this.lblUserName.Text = userName;
this.lblDomineName.Text = domainName;
this.lblStartTime.Text = tickCount;
this.lblPageSize.Text = systemPageSize;
this.lblSystemDir.Text = systemDir;
this.lblLogical.Text = string.Join(",", drives);
this.lblProcesserCounter.Text = processorCounter;
this.lblPlatform.Text = platform;
this.lblNewLine.Text = newLine.ToString();
this.lblSystemType.Text = is64Os ? "64bit" : "32bit";
this.lblProcessType.Text = is64Process ? "64bit" : "32bit";
this.lblCurDir.Text = currDir;
this.lblCmdLine.Text = cmdLine;
this.lblWorkSet.Text = GetPhisicalMemory().ToString()+"MB";
//环境变量
// HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
IDictionary dicMachine = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine);
this.rtbVaribles.AppendText(string.Format("{0}: {1}", "机器环境变量", newLine));
foreach (string str in dicMachine.Keys) {
string val = dicMachine[str].ToString();
this.rtbVaribles.AppendText(string.Format("{0}: {1}{2}", str, val, newLine));
}
this.rtbVaribles.AppendText(string.Format("{0}{1}", ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", newLine));
// 环境变量存储在 Windows 操作系统注册表的 HKEY_CURRENT_USER\Environment 项中,或从其中检索。
IDictionary dicUser = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.User);
this.rtbVaribles.AppendText(string.Format("{0}: {1}", "用户环境变量", newLine));
foreach (string str in dicUser.Keys)
{
string val = dicUser[str].ToString();
this.rtbVaribles.AppendText(string.Format("{0}: {1}{2}", str, val, newLine));
}
this.rtbVaribles.AppendText(string.Format("{0}{1}", ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", newLine));
IDictionary dicProcess = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process);
this.rtbVaribles.AppendText(string.Format("{0}: {1}", "进程环境变量", newLine));
foreach (string str in dicProcess.Keys)
{
string val = dicProcess[str].ToString();
this.rtbVaribles.AppendText(string.Format("{0}: {1}{2}", str, val, newLine));
}
//特殊目录
string[] names = Enum.GetNames(typeof(Environment.SpecialFolder));
foreach (string name in names){ Environment.SpecialFolder sf;
if (Enum.TryParse<Environment.SpecialFolder>(name, out sf))
{
string folder = Environment.GetFolderPath(sf);
this.rtbFolders.AppendText(string.Format("{0}: {1}{2}", name, folder, newLine));
}
}
//获取其他硬件,软件信息
GetPhicnalInfo();
} private string GetOsVersion(Version ver) {
string strClient = "";
if (ver.Major == && ver.Minor == )
{
strClient = "Win XP";
}
else if (ver.Major == && ver.Minor == )
{
strClient = "Win Vista";
}
else if (ver.Major == && ver.Minor == )
{
strClient = "Win 7";
}
else if (ver.Major == && ver.Minor == )
{
strClient = "Win 2000";
}
else
{
strClient = "未知";
}
return strClient;
} /// <summary>
/// 获取系统内存大小
/// </summary>
/// <returns>内存大小(单位M)</returns>
private int GetPhisicalMemory()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher(); //用于查询一些如系统信息的管理对象
searcher.Query = new SelectQuery("Win32_PhysicalMemory ", "", new string[] { "Capacity" });//设置查询条件
ManagementObjectCollection collection = searcher.Get(); //获取内存容量
ManagementObjectCollection.ManagementObjectEnumerator em = collection.GetEnumerator(); long capacity = ;
while (em.MoveNext())
{
ManagementBaseObject baseObj = em.Current;
if (baseObj.Properties["Capacity"].Value != null)
{
try
{
capacity += long.Parse(baseObj.Properties["Capacity"].Value.ToString());
}
catch
{
return ;
}
}
}
return (int)(capacity / / );
} /// <summary>
/// https://msdn.microsoft.com/en-us/library/aa394084(VS.85).aspx
/// </summary>
/// <returns></returns>
private int GetPhicnalInfo() {
ManagementClass osClass = new ManagementClass("Win32_Processor");//后面几种可以试一下,会有意外的收获//Win32_PhysicalMemory/Win32_Keyboard/Win32_ComputerSystem/Win32_OperatingSystem
foreach (ManagementObject obj in osClass.GetInstances())
{
PropertyDataCollection pdc = obj.Properties;
foreach (PropertyData pd in pdc) {
this.rtbOs.AppendText(string.Format("{0}: {1}{2}", pd.Name, pd.Value, "\r\n"));
}
}
return ;
}
}
}
小例子,小知识 ,积跬步以至千里, 积小流以成江海。
C# 获取操作系统相关的信息的更多相关文章
- 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]
使用ttXactAdmin.ttSQLCmdCacheInfo.ttSQLCmdQueryPlan获取SQL相关具体信息,适合于tt11以上版本号. $ ttversion TimesTen Rele ...
- C# 获取操作系统相关信息
1.获取操作系统版本(PC,PDA均支持) Environment.OSVersion 2.获取应用程序当前目录(PC支持) Environment.CurrentDirectory 3.列举本地硬盘 ...
- ios 获取设备相关的信息
.获取设备的信息 UIDevice *device = [[UIDevice alloc] int]; NSString *name = device.name; //获取设备所有者的名称 NSStr ...
- Java 获取操作系统相关的内容
package com.hikvision.discsetup.util; import java.lang.reflect.Field; import java.net.InetAddress; i ...
- ios 获取手机相关的信息
获取手机信息 应用程序的名称和版本号等信息都保存在mainBundle的一个字典中,用下面代码可以取出来 //获取版本号 NSDictionary *infoDict = [[NSBundl ...
- snmp获取设备相关管理信息
在本文中,作者将向我们展示如何用snmp代理监视网络设备,甚至发送软件警告. 网络上很多代理在为我们服务.只要我们开启UDP/161,162端口,这些代理就会以Management Informati ...
- C# 获取计算机cpu,硬盘,内存相关的信息
using System;using System.Management; namespace MmPS.Common.Helper{ /// <summary> /// 获取计算机相关的 ...
- 获取本地的jvm信息,进行图形化展示
package test1; import java.lang.management.CompilationMXBean; import java.lang.management.GarbageCol ...
- .NET Core 获取操作系统各种信息
.NET Core 获取操作系统各种信息 一.前言 .NET Core 内置了一些API供我们获取操作系统.运行时.框架等信息.这些API不是很常用,所有有些小伙伴可能还不知道,这里做一些可能用到的获 ...
随机推荐
- PHP之ThinkPHP框架(界面)
Thinkphp框架其精髓就在于实现了MVC思想,其中M为模板.V为视图.C为控制器,模板一般是公共使用类,在涉及数据库时,一般会跟数据表同名,视图会和控制器类里的方法进行名字的一一对应. 下载及配置 ...
- python --商品评价---- 数据表结构以及理解
商品评论(评价)功能 1.概述 评论功能已经成为APP和网站开发中的必备功能.本文主要介绍评论功能的数据库设计. 评论功能最主要的是发表评论和回复评论(删除功能在后台).评论功能的拓展功能体现有以下几 ...
- DotNetCore深入了解之一Startup类
一个典型的ASP.NET Core应用程序会包含Program与Startup两个文件.Program类中有应用程序的入口方法Main,其中的处理逻辑通常是创建一个WebHostBuilder,再生成 ...
- Python快速学习04:循环 & 函数
前言 系列文章:[传送门] 也就今天认识了 LC ,很开心. 本文目录 循环 for while 中断 函数 函数定义 函数调用 for循环 Python 中的for 循环象shell 脚本里的for ...
- redis学习总结-redis作为MyBatis的自定义缓存
1.RedisCache.java package com.houtai.cache; import java.util.concurrent.locks.ReadWriteLock; import ...
- 一个注意事项:内部类引用的外部变量必须是final的
之前写过一个项目,好久没更新了,最近翻起以前的代码,发现在这里报了一个错.(现在转到Intellij了,从前在Eclipse luna中是可以编译通过的,Eclipse mars也会报错,JDK版本都 ...
- react入门学习及总结
前言 不知不觉一年又过去了,新的一年又到来,2019应该要好好思考,好好学点有用的东西,规划下自己今后的学习方向,不要再像以前那样感觉很迷茫. react简单介绍 官网及中文文档 https://re ...
- wap开发中的cookie
安卓和ios的wap开发,安卓中的cookie可以识别中文,但是ios不能识别,需要转码成通用码(UNICODE),解决办法:直接转成16进制码, escape('测试文字') 友情链接:http:/ ...
- python模块之shutil
shutil是一个用于简化文件操作的模块. 复制文件(传入源文件对象和目标文件对象) import shutil f1 = open(r'/Users/jingxing/PycharmProjects ...
- 数据分析面试题之Pandas中的groupby
昨天晚上,笔者有幸参加了一场面试,有一个环节就是现场编程!题目如下: 示例数据如下,求每名学生(ID)对应的成绩(score)最高的那门科目(class)与ID,用Python实现: 这个题目 ...