C#获取系统相关信息_详细异常信息

本文讨论了异常处理中的关键信息收集方法,并展示了如何获取电脑软硬件的相关信息,以便于追踪Bug和用户支持。

从用户的角度来说,当程序出现异常时只要有给点简单的提示就行.但从开发者的角度来说就需要非常详细的信息,这对追踪Bug很有用.异常相关的详细信息可以记录到日志文件中.这样你自己测试时比较方便点,而且做用户支持时也方便,如果用户碰到啥问题要他们把错误日志发过来就行.

异常处理语句通常的形式一般如下:

try

{

 //some code

}

catch(Exception ex)

{

}

我们通常获取的提示信息是ex.Message,简单描述了下出现啥异常了.但ex里面还包括其他些详细的信息

ex.GetType().FullName.详细的异常名字,我们知道Exception是比较笼统的,还有些更详细的异常名字比如System.IndexOutOfRangeException

ex.Source 返回应用程序的名字

ex.TargetSite 返回是出异常的函数的名字

ex.StackTrace 这里面的信息比较多,有出错的函数名字,还有具体是哪一cs源文件中,并且详细到源代码中哪一行

 

除了这些信息外,有些时候可能还想知道版本号,程序运行的操作系统和硬件的相关信息.因为有时一些Bug可能只在某个操作系统中才出现.当然你能用其他方法知道,但通过写代码把这些信息收集起来更方便.

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();//获取程序的版本号

 

电脑软件,硬件相关信息的获取

using System.Management;   //先add reference,找到System.Mangement,点OK

 

string msg = string.Empty ;

                ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT   * From Win32_OperatingSystem");

                ManagementObjectCollection queryCollection = query.Get();

                foreach (ManagementBaseObject managementObject in queryCollection)

                {

                    msg = managementObject["Caption"] +                    //操作系统名字,比如Microsoft Windows 7 Professional

                                managementObject["Version"] +                  //系统版本号,比如6.1.7601

                               managementObject["Manufacturer"] +          //操作系统生产厂商,比如Microsoft Corporation

                               managementObject["csname"] +                  //电脑名,这个是自己随便取的

                               managementObject["WindowsDirectory"];    //系统安装目录,比如c:\Windows

                }

                query = new ManagementObjectSearcher("SELECT * From Win32_ComputerSystem");

                queryCollection = query.Get();

                foreach (ManagementObject managementObject in queryCollection)

                {

                    msg += managementObject["Manufacturer"]  +     //电脑厂商,比如Dell Inc.

                               managementObject["model"] +                  //型号,比如OptiPlex 755

                               managementObject["SystemType"] +        //cpu类型,比如x64-based PC,表示64位的cpu

                               managementObject["totalphysicalmemory"].ToString() +     //内存大小

                               managementObject["Domain"] +               //域名

                               managementObject["UserName"] ;            //电脑开机时的用户名

;

 

                }

反正电脑软硬件相关的很多信息都可以通过类ManagementObjectSearcher去查看,比如硬盘,主板,网卡得一些信息

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值