
public class CPUInfo
{
#region 属性
#region CPU名称
string strCPUName = stringEmpty;
public string CPUName
{
get { return strCPUName; }
set { strCPUName = value; }
}
#endregion
#region CPU序列号
string strCPUID = stringEmpty;
public string CPUID
{
get { return strCPUID; }
set { strCPUID = value; }
}
#endregion
#region CPU个数
int nCPUCount = 0;
public int CPUCount
{
get { return nCPUCount; }
set { nCPUCount = value; }
}
#endregion
#region CPU制造商
string strCPUManufacturer = stringEmpty;
public string CPUManufacturer
{
get { return strCPUManufacturer; }
set { strCPUManufacturer = value; }
}
#endregion
#region 当前时钟频率
string strCPUCurrentClockSpeed = stringEmpty;
public string CPUCurrentClockSpeed
{
get { return strCPUCurrentClockSpeed; }
set { strCPUCurrentClockSpeed = value; }
}
#endregion
#region 最大时钟频率
string strCPUMaxClockSpeed = stringEmpty;
public string CPUMaxClockSpeed
{
get { return strCPUMaxClockSpeed; }
set { strCPUMaxClockSpeed = value; }
}
#endregion
#region 外部频率
string strCPUExtClock = stringEmpty;
public string CPUExtClock
{
get { return strCPUExtClock; }
set { strCPUExtClock = value; }
}
#endregion
#region 当前电压
string strCPUCurrentVoltage = stringEmpty;
public string CPUCurrentVoltage
{
get { return strCPUCurrentVoltage; }
set { strCPUCurrentVoltage = value; }
}
#endregion
#region 二级缓存
string strCPUL2CacheSize = stringEmpty;
public string CPUL2CacheSize
{
get { return strCPUL2CacheSize; }
set { strCPUL2CacheSize = value; }
}
#endregion
#region 数据带宽
string strCPUDataWidth = stringEmpty;
public string CPUDataWidth
{
get { return strCPUDataWidth; }
set { strCPUDataWidth = value; }
}
#endregion
#region 地址带宽
string strCPUAddressWidth = stringEmpty;
public string CPUAddressWidth
{
get { return strCPUAddressWidth; }
set { strCPUAddressWidth = value; }
}
#endregion
#region 运用百分比
int iCPUUsedPercent;
public int CPUUsedPercent
{
get { return iCPUUsedPercent; }
set { iCPUUsedPercent = value; }
}
#endregion
#region CPU温度
double strCPUTemperature;
public double CPUTemperature
{
get { return strCPUTemperature; }
set { strCPUTemperature = value; }
}
#endregion
#endregion
#region 构造函数
public CPUInfo()
{
GetCPUInfo();
}
#endregion
//GetCPUInfo
#region GetCPUInfo
public void GetCPUInfo()
{
#region 运用百分比
GetCPULoadPercentage();
#endregion
CPUCount = EnvironmentProcessorCount; //CPU个数
//GetCPUCurrentTemperature();
//实例化一个ManagementClass类,并将Win32_Processor作为参数传递进去,
//这样就能够查询Win32_Processor这个类里面的一些信息了。
ManagementClass mClass = new ManagementClass("Win32_Processor");
//获取Win32_Processor这个类的所有实例
ManagementObjectCollection moCollection = mClassGetInstances();
//对Win32_Processor这个类执行 遍历
foreach (ManagementObject mObject in moCollection)
{
CPUName = mObject["Name"]ToString(); //获取CPU名称
CPUID = mObject["ProcessorId"]ToString(); //获取 CPU ID
CPUManufacturer = mObject["Manufacturer"]ToString(); //获取CPU制造商
CPUCurrentClockSpeed = mObject["CurrentClockSpeed"]ToString(); //获取当前时钟频率
CPUMaxClockSpeed = mObject["MaxClockSpeed"]ToString(); //获取最大时钟频率
CPUExtClock = mObject["ExtClock"]ToString(); //获取外部频率
CPUCurrentVoltage = mObject["CurrentVoltage"]ToString(); //获取当前电压
CPUL2CacheSize = mObject["L2CacheSize"]ToString(); //获取二级缓存
CPUDataWidth = mObject["DataWidth"]ToString(); //获取数据带宽
CPUAddressWidth = mObject["AddressWidth"]ToString(); //获取地址带宽
}
}
public void GetCPUCurrentTemperature()
{
ManagementObjectSearcher mos = new ManagementObjectSearcher(@"root\wmi", @"select from MSAcpi_ThermalZoneTemperature");
foreach (ManagementObject mo in mosGet())
{
CPUTemperature = ConvertToDouble(ConvertToDouble(mo["CurrentTemperature"]ToString()) - 2732) / 10;
}
}
public int GetCPULoadPercentage()
{
int CPUusedpercent = 0;
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT FROM Win32_Processor");
foreach (ManagementObject queryObj in searcherGet())
{
CPUusedpercent = intParse(queryObj["LoadPercentage"]ToString());
CPUUsedPercent = CPUusedpercent;
break;
}
}
catch
{
CPUusedpercent = 0;
}
return CPUusedpercent;
}
#endregion
}
var os=require('os');
//获取cpu(处理器架构)
var arch=osarch();
consolelog(arch);
//获取cpu信息
var cpus=oscpus();
consolelog(cpus);
//字节顺序 高位优先返回BE,低位优先的返回LE
var endianness=osendianness();
consolelog(endianness);
//空闲内存字节
var freemem=osfreemem()
consolelog(freemem);
//当前登录用户的根目录
var homedir=oshomedir();
consolelog(homedir);
// *** 作系统主机名
var hostname=oshostname()
consolelog(hostname);
//系统最近5、10、15分钟的平均负载,这是一个针对linux或unix的统计,windows下始终返回[0,0,0]
var loadavg=osloadavg();
consolelog(loadavg);
//网络配置列表
var networkInterfaces=osnetworkInterfaces();
consolelog(networkInterfaces);
// *** 作系统类型,返回值有'darwin', 'freebsd', 'linux', 'sunos' , 'win32'
var platform=osplatform();
consolelog(platform);
// *** 作系统版本
var release=osrelease();
consolelog(release);
// *** 作系统临时文件的默认目录
var tmpdir=ostmpdir()
consolelog(tmpdir);
//系统总内存
var totalmem=ostotalmem()
consolelog(totalmem);
// *** 作系统名称,基于linux的返回linux,基于苹果的返回Darwin,基于windows的返回Windows_NT
var type=ostype();
consolelog(type);
//计算机正常运行时间
var uptime=osuptime();
consolelog(uptime);
参考:>
朋友,这是你的电脑“丢失”或“误删”了“系统文件”,或“系统文件”被病
毒和“顽固”木马“破坏”,我给你8套方案!
(答案原创,严禁盗用,如有雷同,纯属山寨!)
(提示:360急救箱不能联网,就先用:(5)网络修复,重启电脑,或者使
用:离线模式)
1下载个:“360系统急救箱”!(安全模式下,联网使用,效果更好!)
(注意:已经安装了“360安全卫士”的朋友,直接打开“木马云查杀”,
点击:快速扫描,扫描结束后,中间有:没有问题,请用360急救箱,点击它!)
1先点:“开始急救”查杀病毒,删除后,“立即重启”!
2重启开机后,再点开“文件恢复区”,全选,点:“彻底删除文件”和“可
疑启动项”!
3再点开“系统修复”,“全选”,再“立即修复”文件!(关键一步)
4再点开:“dll文件恢复”,扫描一下,如果没有就行了,如果有丢失,添
加恢复,手动添加,立即恢复!
5点开:“网络修复”,点:“开始修复”,重启电脑!(关键一步)
2。用“360安全卫士”里“系统修复”,点击“使用360安全网址导航”,“一
键修复”!(关键一步)
3。用“360安全卫士”的“扫描插件”,然后再“清理插件”,把它删除!
4。再用“360杀毒双引擎版”,勾选“自动处理扫描出的病毒威胁”,用“全盘
扫描”和“自定义扫描”,扫出病毒木马,再点删除!
重启电脑后,来到“隔离区”,点“彻底删除”!
5。使用360安全卫士的“木马查杀”,全盘扫描,完毕再“自定义扫描”!
扫出木马或恶意病毒程序,就点删除!
重启电脑后,来到“文件恢复区”,点“彻底删除”!
6。如果还是不行,试试:“金山急救箱”的扩展扫描和“金山网盾”,一键修
复!或者:可牛免费杀毒,浏览器医生,浏览器修复,立即扫描,立即修复!
7。再不行,重启电脑,开机后,按F8,回车,回车,进到“安全模式”里,
“高级启动选项”里,“最后一次正确配置”,按下去试试,看看效果!
8。实在不行,做“一键还原”系统!(
#include "StdAfxh"
#include "\puiddiskh"
#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <comdefh>
#include <Wbemidlh># pragma comment(lib, "wbemuuidlib")
CpuIDDisk::CpuIDDisk(void)
{
GetInfomation();
}CpuIDDisk::~CpuIDDisk(void)
{
}
int CpuIDDisk::GetInfomation(void)
{
HRESULT hres;
//步骤1:不是必须的,COM只须也只能初始化一次
hres = CoInitializeEx(0, COINIT_MULTITHREADED );
if (FAILED(hres))
{
return 1; //初始化COM异常:注意,COM只须也只能初始化一次
}
//步骤2:不是必须的,COM只须也只能设置一次
//Set general COM security levels
hres = CoInitializeSecurity(
NULL,
-1, // COM authentication
NULL, // Authentication services
NULL, // Reserved
RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication
RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation
NULL, // Authentication info
EOAC_NONE, // Additional capabilities
NULL // Reserved
);
if (FAILED(hres))
{
CoUninitialize();
return 1; // Program has failed
}
//以上不是必须的,若已有“::COMInit();”,则要跳过
//步骤3: Obtain the initial locator to WMI
IWbemLocator pLoc = NULL;
hres = CoCreateInstance(
CLSID_WbemLocator,
0,
CLSCTX_INPROC_SERVER,
IID_IWbemLocator, (LPVOID ) &pLoc);
if (FAILED(hres))
{
CoUninitialize();
return 1;//Failed to create IWbemLocator object
} //步骤4:Connect to WMI through the IWbemLocator::ConnectServer method
IWbemServices pSvc = NULL;
hres = pLoc->ConnectServer(
_bstr_t(L"ROOT\\CIMV2"), // Object path of WMI namespace
NULL, // User name NULL = current user
NULL, // User password NULL = current
0, // Locale NULL indicates current
NULL, // Security flags
0, // Authority (eg Kerberos)
0, // Context object
&pSvc // pointer to IWbemServices proxy
);
if (FAILED(hres))
{
pLoc->Release();
CoUninitialize();
return 1; // Program has failed
}
// 步骤5: Set security levels on the proxy
hres = CoSetProxyBlanket(
pSvc, // Indicates the proxy to set
RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx
RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx
NULL, // Server principal name
RPC_C_AUTHN_LEVEL_CALL, // RPC_C_AUTHN_LEVEL_xxx
RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
NULL, // client identity
EOAC_NONE // proxy capabilities
); if (FAILED(hres))
{
pSvc->Release();
pLoc->Release();
CoUninitialize();
return 1;
} // 步骤6:Use the IWbemServices pointer to make requests of WMI ----
IEnumWbemClassObject pEnumerator = NULL;
//计算CPUID
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT FROM Win32_Processor"),//Win32_OperatingSystem
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);
if (FAILED(hres))
{
pSvc->Release();
pLoc->Release();
CoUninitialize();
return 1;
}
// 步骤7:Get the data from the query
IWbemClassObject pclsObj;
ULONG uReturn = 0;
while (pEnumerator)
{
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
&pclsObj, &uReturn); if(0 == uReturn)
{
break;
}
VARIANT vtProp;
VariantInit(&vtProp);
hr = pclsObj->Get(L"ProcessorId", 0, &vtProp, 0, 0);
strProcessID=_com_util::ConvertBSTRToString(vtPropbstrVal);//strProcessID:类级变量
} //计算硬盘系列号
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT FROM Win32_DiskDrive"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator); if (FAILED(hres))
{
pSvc->Release();
pLoc->Release();
CoUninitialize();
return 1;
}
while (pEnumerator)
{
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
&pclsObj, &uReturn); if(0 == uReturn)
{
break;
} VARIANT vtProp;
VariantInit(&vtProp);
hr = pclsObj->Get(L"PNPDeviceID", 0, &vtProp, 0, 0);
strDisk=_com_util::ConvertBSTRToString(vtPropbstrVal);
} pSvc->Release();
pLoc->Release();
pEnumerator->Release();
pclsObj->Release();
CoUninitialize(); return 0;
尊敬的用户您好,从P III以后CPU不支持序列号了,可以读取CPU名字之类的。
一般用WMI读就行,硬盘的话,也可以直接读取SMART。
写过一个,留下邮箱,给你发过去。
希望可以帮到您
Dim MemoyCounter As New ComputerInfo()
Dim CPUCounter As New PerformanceCounter("Processor", "% Processor Time", "_Total")
Private Sub Timer1_Tick(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles Timer1Tick
Dim CPU As Double = CPUCounterNextValue
Dim neicun As Double = (MemoyCounterTotalPhysicalMemory - MemoyCounterAvailablePhysicalMemory) / MemoyCounterTotalPhysicalMemory 100%
获取CPU及物理内存使用率
以上就是关于c# 我想用WMI 来读取远程的(同一个局域网的)机器的cpu ID,主板ID,硬盘ID等,可以实现么全部的内容,包括:c# 我想用WMI 来读取远程的(同一个局域网的)机器的cpu ID,主板ID,硬盘ID等,可以实现么、怎么用nodejs代码实现获取cpuID和主板ID、如何获取多核,多cpu系统中指定cpu的序列号等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)