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

来源:互联网 发布:什么软件画电路图 编辑:程序博客网 时间:2024/05/21 03:58

从用户的角度来说,当程序出现异常时只要有给点简单的提示就行.但从开发者的角度来说就需要非常详细的信息,这对追踪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去查看,比如硬盘,主板,网卡得一些信息

 

 

 

 

 

 

原创粉丝点击