usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.IO;usingSystem.Linq;usingSystem.Management;usingSystem.Net;usingSystem.Net.NetworkInformation;usingSystem.Net.Sockets;usingSystem.Text;namespaceHh.Mes.Common{publicclassComputerHelp{///<summary>///端口是否被占用///</summary>publicstaticboolPortInUse(intport){boolinUse=false;varipProperties=IPGlobalProperties.GetIPGlobalProperties();varipEndPoints=ipProperties.GetActiveTcpListeners();foreach(IPEndPointendPointinipEndPoints){if(endPoint.Port==port){inUse=true;break;}}returninUse;}///<summary>///获取本地IP地址信息///</summary>publicstaticstringGetAddressIP(){//获取本地的IP地址stringAddressIP=string.Empty;foreach(IPAddress_IPAddressinDns.GetHostEntry(Dns.GetHostName()).AddressList){if(_IPAddress.AddressFamily==AddressFamily.InterNetwork||_IPAddress.AddressFamily==AddressFamily.InterNetworkV6){AddressIP=_IPAddress.ToString();}}returnAddressIP;}///<summary>///获取CPU信息///</summary>///<returns></returns>publicstaticDictionary<string,string>GetCPUInfo(){varresult=newDictionary<string,string>();//varmc=newManagementClass("win32_processor");//创建ManagementClass对象//varmoc=mc.GetInstances();//获取CPU信息//foreach(varmoinmoc.Cast<ManagementObject>())//{//mo["processorid"].ToString();//获取CUP编号//}vardriveID=newManagementObjectSearcher("SELECT * FROM Win32_Processor");//查询CPU信息intindex=1;foreach(varMyXianKaindriveID.Get().Cast<ManagementObject>()){foreach(variteminMyXianKa.Properties){if(!result.ContainsKey(item.Name)){result.Add(item.Name,item.Value?.ToString());}else{result.Add(item.Name+index,item.Value?.ToString());}}index++;//MyXianKa.["Manufacturer"].ToString();//获取CUP制造商名称//MyXianKa["Version"].ToString();//获取CPU版本号//MyXianKa["Name"].ToString();//获取CUP产品名称}returnresult;}///<summary>///获取CPU占用百分比///</summary>///<returns></returns>publicstaticstringGetCpuUsage(){//varcpuCounter=newPerformanceCounter("Processor","% Processor Time","_Total");//returncpuCounter.NextValue();varresult=string.Empty;ManagementObjectSearchersearcher=newManagementObjectSearcher("select PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor WHERE Name=\"_Total\"");varcpuItem=searcher.Get().Cast<ManagementObject>().Select(item=>new{PercentProcessorTime=item["PercentProcessorTime"]}).FirstOrDefault();if(cpuItem!=null&&cpuItem.PercentProcessorTime!=null){result=cpuItem.PercentProcessorTime.ToString()+"%";}else{result="获取失败";}returnresult;}///<summary>///获取系统内存使用情况///</summary>///<remarks>需要添加System.Management的引用</remarks>///<returns>item1=总内存,item2=可使用,item3=已使用,item4=占用百分比</returns>publicstaticValueTuple<string,string,string,string>GetMemery(){//获取总物理内存大小varcimobject1=newManagementClass("Win32_PhysicalMemory");varmoc1=cimobject1.GetInstances();doubleavailable=0,capacity=0;foreach(varmo1inmoc1.Cast<ManagementObject>()){capacity+=Math.Round(long.Parse(mo1.Properties["Capacity"].Value.ToString())/1024/1024/1024.0,1);}moc1.Dispose();cimobject1.Dispose();//获取内存可用大小varcimobject2=newManagementClass("Win32_PerfFormattedData_PerfOS_Memory");varmoc2=cimobject2.GetInstances();foreach(varmo2inmoc2.Cast<ManagementObject>()){available+=Math.Round(long.Parse(mo2.Properties["AvailableMBytes"].Value.ToString())/1024.0,1);}moc2.Dispose();cimobject2.Dispose();//总内存varTotal=capacity.ToString()+"G";//可使用varSys=available.ToString()+"G";//已使用stringUsed=(capacity-available).ToString()+"G";//占用百分比varUsage=Math.Round((capacity-available)*100/capacity,0).ToString()+"%";return(Total,Sys,Used,Usage);}///<summary>///获取磁盘信息///</summary>///<returns></returns>publicstaticList<DriveInfo>GetDriveInfos(){varallDirves=DriveInfo.GetDrives();returnallDirves.Where(x=>x.IsReady).ToList();}///<summary>///获取电脑名称///</summary>///<returns></returns>publicstaticstringGetComputerName(){returnEnvironment.MachineName;}///<summary>///获取操作系统信息///</summary>///<returns></returns>publicstaticDictionary<string,string>GetOSInfo(){varresult=newDictionary<string,string>();varmc=newManagementClass("Win32_OperatingSystem");varmoc=mc.GetInstances();foreach(varmoinmoc.Cast<ManagementObject>()){foreach(variteminmo.Properties){result.Add(item.Name,item.Value?.ToString());}}returnresult;}///<summary>///执行cmd命令https://www.cnblogs.com/njl041x/p/3881550.html///多命令请使用批处理命令连接符:///<![CDATA[///&:同时执行两个命令///|:将上一个命令的输出,作为下一个命令的输入///&&:当&&前的命令成功时,才执行&&后的命令///||:当||前的命令失败时,才执行||后的命令]]>///其他请百度///</summary>publicstaticvoidRunCmd(stringcmd,stringcmdPath,outstringoutput){cmd=cmd.Trim().TrimEnd('&')+"&exit";//说明:不管命令是否成功均执行exit命令,否则当调用ReadToEnd()方法时,会处于假死状态using(varp=newProcess()){p.StartInfo.FileName=cmdPath;p.StartInfo.UseShellExecute=false;//是否使用操作系统shell启动p.StartInfo.RedirectStandardInput=true;//接受来自调用程序的输入信息p.StartInfo.RedirectStandardOutput=true;//由调用程序获取输出信息p.StartInfo.RedirectStandardError=true;//重定向标准错误输出p.StartInfo.CreateNoWindow=true;//不显示程序窗口p.Start();//启动程序//向cmd窗口写入命令p.StandardInput.WriteLine(cmd);p.StandardInput.AutoFlush=true;//获取cmd窗口的输出信息output=p.StandardOutput.ReadToEnd();p.WaitForExit();//等待程序执行完退出进程p.Close();}}}}