public class MonitorTools
{
/// <summary>
/// 获取具体进程的内存,线程等参数情况
/// </summary>
/// <param name="processName"></param>
public static void getWorkingSet(string processName)
{
Process[] ps = Process.GetProcesses();
foreach (Process p in ps)
{
if (p.MainWindowHandle != null)
{
if (processName == p.ProcessName)
{
using (var process = Process.GetProcessesByName(processName)[])
using (var p1 = new PerformanceCounter("Process", "Working Set - Private", processName))
using (var p2 = new PerformanceCounter("Process", "Working Set", processName))
{
Console.WriteLine("{0}{1:N} KB", "工作集(进程类)", process.WorkingSet64 / );
Console.WriteLine("{0}{1:N} KB", "内存(专用工作集)", p1.NextValue() / );
Console.WriteLine(process.Threads.Count.ToString());//线程
Console.WriteLine(process.Id.ToString());//PID
}
}
}
}
} /// <summary>
/// 遍历获取所有硬盘的可用空间
/// </summary>
/// <returns></returns>
public static string GetDriveInfo()
{
string result = string.Empty;
foreach (DriveInfo item in DriveInfo.GetDrives())
{
if (item.DriveType == DriveType.Fixed)
{
result += string.Format("{0} 可用空间{1:N} \r\n", item.Name, item.AvailableFreeSpace / ( * ) + "MB");
}
}
return result;
} /// <summary>
/// 根据文件路径获得文件的大小信息
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static string GetFileSize(string filePath)
{
string length = string.Empty;
try
{
FileInfo file = new FileInfo(filePath);
if (file != null)
{
length = file.Length.ToString();
}
return length;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return string.Empty;
}
} //测试获取CPU,内存等运行情况
[DllImport("kernel32")]
public static extern void GetSystemInfo(ref CPU_INFO cpuinfo);
[DllImport("kernel32")]
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo); //定义CPU的信息结构
[StructLayout(LayoutKind.Sequential)]
public struct CPU_INFO
{
public uint dwOemId;
public uint dwPageSize;
public uint lpMinimumApplicationAddress;
public uint lpMaximumApplicationAddress;
public uint dwActiveProcessorMask;
public uint dwNumberOfProcessors;
public uint dwProcessorType;
public uint dwAllocationGranularity;
public uint dwProcessorLevel;
public uint dwProcessorRevision;
} //定义内存的信息结构
[StructLayout(LayoutKind.Sequential)]
public struct MEMORY_INFO
{
public uint dwLength;
public uint dwMemoryLoad;
public uint dwTotalPhys;
public uint dwAvailPhys;
public uint dwTotalPageFile;
public uint dwAvailPageFile;
public uint dwTotalVirtual;
public uint dwAvailVirtual;
} /// <summary>
/// 调用GetSystemInfo函数获取CPU的相关信息
/// </summary>
/// <returns></returns>
public static string GetCPUInfo()
{
try
{
string CPUresult = string.Empty;
CPU_INFO CpuInfo;
CpuInfo = new CPU_INFO();
GetSystemInfo(ref CpuInfo);
CPUresult += "本计算机中有" + CpuInfo.dwNumberOfProcessors.ToString() + "个CPU";
CPUresult += "CPU的类型为" + CpuInfo.dwProcessorType.ToString();
CPUresult += "CPU等级为" + String.Format("{0:N}", CpuInfo.dwProcessorLevel.ToString());
CPUresult += "CPU的OEM ID为" + String.Format("{0:N}", CpuInfo.dwOemId.ToString());
CPUresult += "CPU中的页面大小为" + String.Format("{0:N}", CpuInfo.dwPageSize.ToString()); return CPUresult;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return string.Empty;
}
} /// <summary>
/// 调用GlobalMemoryStatus函数获取内存的相关信息
/// </summary>
/// <returns></returns>
public static string GetMemoryInfo()
{
try
{
string Memoryresult = string.Empty;
MEMORY_INFO MemInfo;
MemInfo = new MEMORY_INFO();
GlobalMemoryStatus(ref MemInfo);
Memoryresult += MemInfo.dwMemoryLoad.ToString() + "%的内存正在使用";
Memoryresult += "物理内存共有" + (MemInfo.dwTotalPhys) / ( * ) + " MB";
Memoryresult += "可使用的物理内存有" + (MemInfo.dwAvailPhys) / ( * ) + " MB";
Memoryresult += "交换文件总大小为" + (MemInfo.dwTotalPageFile) / ( * ) + " MB";
Memoryresult += "尚可交换文件大小为" + (MemInfo.dwAvailPageFile) / ( * ) + " MB";
Memoryresult += "总虚拟内存有" + (MemInfo.dwTotalVirtual) / ( * ) + " MB";
Memoryresult += "未用虚拟内存有" + (MemInfo.dwAvailVirtual) / ( * ) + " MB"; return Memoryresult;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return string.Empty;
}
}
}
 /// <summary>
/// 根据PID结束指定进程
/// </summary>
/// <param name="pid"></param>
public static bool EndProcess(int pid)
{
try
{
Process process = Process.GetProcessById(pid);
process.Kill();
return true;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return false;
}
} /// <summary>
/// 监控线程的运行情况,如果退出,则记录退出的错误码和退出时间
/// </summary>
/// <param name="pid"></param>
/// <returns></returns>
public static string MonitorProcess(int pid)
{
string Message = string.Empty;
try
{
Process process = Process.GetProcessById(pid);
if (process.HasExited)
{
Message = string.Format("ExitCode:{0};ExitTime:{1}", process.ExitCode, process.ExitTime.ToString("yyyy年MM月dd HH时mm分ss秒"));
}
return Message;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return string.Empty;
}
}
        /// <summary>
/// 调用GetSystemInfo函数获取CPU的相关信息,获取CPU占用率
/// </summary>
/// <returns></returns>
public static string GetCPUInfo()
{
string CPUresult = string.Empty;
try
{
PerformanceCounter pcCpuLoad = new PerformanceCounter("Processor", "% Processor Time", "_Total");
pcCpuLoad.MachineName = ".";
pcCpuLoad.NextValue();
float cpuLoad = pcCpuLoad.NextValue();
string.Format("CPU占用率:{0} %",cpuLoad);
return CPUresult;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return string.Empty;
}
}

C#获取客服端ip和用户名:

. 在asp.Net中专用属性:
  获取服务器电脑名:page.server.manchinename
  获取用户信息:page.user
  获取客户端电脑名:page.request.userhostname
  获取客户端电脑ip:page.request.userhostaddress . 在网络编程中的通用方法:
  获取当前电脑名:static system.Net.dns.gethostname()
  根据电脑名取出全部ip地址:static system.Net.dns.resolve(电脑名).addresslist
  也可根据ip地址取出电脑名:static system.Net.dns.resolve(ip地址).hostname . 系统环境类的通用属性:
  当前电脑名:static system.environment.machinename
  当前电脑所属网域:static system.environment.userdomainname
  当前电脑用户:static system.environment.username 举例子来说明: using system.Net;
private void buttonip_click(object sender, system.eventargs e)
{
system.Net.ipaddress[] addresslist = dns.gethostbyname(dns.gethostname()).addresslist;
if (addresslist.length>)
{
textlip.text = addresslist[].tostring();
textsip.text = addresslist[].tostring();
}
else
{
textlip.text = addresslist[].tostring();
textsip.text = "没有可用的连接";
}
}

监控电脑CPU,内存,文件大小,硬盘空间,IP,用户名的更多相关文章

  1. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

  2. Linux 性能监控之CPU&内存&I/O监控Shell脚本1

    Linux 性能监控之CPU&内存&I/O监控Shell脚本1   by:授客 QQ:1033553122   #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...

  3. grafana+influxdb+telegraf监控服务器cpu,内存和硬盘

    随便抄了一篇,目前我们的项目也在用,这个是linux和windows通吃的一种监控方案,非常有效,详细和优美,需要监控什么具体的业务内容,自己向influxdb中插入就行了. 监控服务器状态是运维必不 ...

  4. 使用python函数持续监控电脑cpu使用率、内存、c盘使用率等

    方法一: # import time 导入time模块 # import psutil 导入psutil模块 # def func(): # while True: ------->持续监控得w ...

  5. Mac - 苹果电脑mac系统释放硬盘空间方法汇总

    硬盘空间是大家最头痛的一个问题,大家在硬盘空间变小的时候怎么腾空间的呢?下面为大家分享7个mac系统释放空间的高级方法,大家赶紧来收了! mac系统释放硬盘空间方法: 方法一:删除Emacs--可以节 ...

  6. linux查看系统CPU,内存,硬盘使用情况

    top查看CPU,内存使用情况 free查看硬盘使用情况

  7. Linux下查看CPU型号,内存大小,硬盘空间命令

    1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:删除重 ...

  8. Linux下查看CPU型号,内存大小,硬盘空间,进程等的命令(详解)

    转自:http://www.jb51.net/article/97157.htm 1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physic ...

  9. Linux下查看CPU型号,内存大小,硬盘空间的命令

    1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:删除重 ...

随机推荐

  1. 进击JavaScript核心 --- (1)基本数据类型

    ES5之前提供了 5种基本数据类型 和 1种引用数据类型 基本数据类型:Undefined, Null, String, Number, Boolean 引用数据类型:Object ES6开始引入了一 ...

  2. nginx 第二课

    基本配置格式 Nginx全局配置参数 使用include文件 HTTP的server部分 虚拟服务器部分 location —— where,when,how. mail的server部分. 完整的示 ...

  3. mysql导入文件

    手里有一个web源码工程文件夹 mysql导入文件: 新建连接,名称随意,用修改设置的用户密码登录,我的连接名称是eee 右击information_schema,建立数据库,数据库名称源码文件名,字 ...

  4. C# Obsolete(已弃用方法属性)

    class Realization : Interface { /// <summary> /// 已弃用的方法,Obsolete第二个参数设置为true,调用此方法会产生警告并引起编译器 ...

  5. CodeForces - 581B-Luxurious Houses

    The capital of Berland has n multifloor buildings. The architect who built up the capital was very c ...

  6. RHEL6.4 安装 highpoint RocketRAID 2720 阵列卡驱动

    step1:下载驱动程序. http://www.highpoint-tech.com/USA_new/series_rr272x_configuration.htm step2:上传驱动程序至服务器 ...

  7. .net笔试题二(填空题、选择题)

    1.面向对象的语言具有_______性.________性._______性答:封装.继承.多态. 2.能用foreach遍历访问的对象需要实现 ____________接口或声明__________ ...

  8. MyBatis学习总结(一)

    MyBatis,是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解 ...

  9. 基于JAVA的设计模式之适配器模式

    适配器模式概念 适配器模式把一个类的接口变换成客户端所期待的另一个接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作.比如我们突然就想看电影了,但是这个电影是AVI格式的,目前我们开发 ...

  10. 《超实用的Node.js代码段》连载二:正确拼接Buffer

    对于初学Node.js框架的开发人员来说,可能认为Buffer模块比较易学.重要性也不是那么突出.其实,Buffer模块在文件I/O和网络I/O中应用非常广泛,其处理二进制的性能比普通字符串性能要高出 ...