Browse Source

继续完善计算机信息统计工具类

yuzhengyang 8 years ago
parent
commit
023132101d

+ 23 - 21
Fork.Net/Test/Y.Test/Views/TestComputerInfoForm.cs

@@ -19,30 +19,32 @@ namespace Y.Test.Views
 
 
         private void TestComputerInfoForm_Load(object sender, EventArgs e)
         private void TestComputerInfoForm_Load(object sender, EventArgs e)
         {
         {
-            Print("UserName: " + Environment.UserName);
-            Print("UserDomainName: " + Environment.UserDomainName);
-            Print("TickCount: " + Environment.TickCount);
-            Print("ProcessorCount: " + Environment.ProcessorCount);
-            Print("OSVersion: " + Environment.OSVersion);
-            Print("MachineName: " + Environment.MachineName);
-            Print("Is64BitOperatingSystem: " + Environment.Is64BitOperatingSystem);
-            Print("-------------------------");
-            Print("CPUID: " + ComputerInfoTool.CPUID());
-            Print("CPU信息: " + ComputerInfoTool.CPUModel());
+            Print("UserName: " + ComputerInfoTool.UserName());
+            Print("登录用户名: " + ComputerInfoTool.UserName2());
+
+            Print("UserDomainName: " + ComputerInfoTool.UserDomainName());
+            Print("TickCount: " + ComputerInfoTool.TickCount());
+            Print("ProcessorCount: " + ComputerInfoTool.ProcessorCount());
+            Print("OSVersion: " + ComputerInfoTool.OSVersion());
+            Print("Is64BitOperatingSystem: " + ComputerInfoTool.Is64BitOperatingSystem());
+
+            Tuple<string, string> cpuinfo = ComputerInfoTool.CpuInfo();
+            Print("CPU 序列号 " + cpuinfo.Item1 + " 型号 " + cpuinfo.Item2);
             Print("显卡信息: " + string.Join(",", ComputerInfoTool.GraphicsCardModel()));
             Print("显卡信息: " + string.Join(",", ComputerInfoTool.GraphicsCardModel()));
             Print("声卡信息: " + string.Join(",", ComputerInfoTool.SoundCardModel()));
             Print("声卡信息: " + string.Join(",", ComputerInfoTool.SoundCardModel()));
             Print("内存: " + ComputerInfoTool.AvailablePhysicalMemory() + " / " + ComputerInfoTool.TotalPhysicalMemory());
             Print("内存: " + ComputerInfoTool.AvailablePhysicalMemory() + " / " + ComputerInfoTool.TotalPhysicalMemory());
-            Print("硬盘ID: " + ComputerInfoTool.GetHDiskID("C"));
-            Print("硬盘信息: " + string.Join(",", ComputerInfoTool.HardDiskModel()));
-            Print("操作系统: " + ComputerInfoTool.GetOS());
-            Print("系统类型: " + ComputerInfoTool.GetSystemType());
-            Print("系统安装日期: " + ComputerInfoTool.GetSystemInstallDate());
-            Print("登录用户名: " + ComputerInfoTool.GetLoginUserName());
-            Print("计算机名: " + ComputerInfoTool.GetComputerName());
-            Print("系统所有用户名: " + string.Join(",", ComputerInfoTool.GetSysUserNames()));
-            Print("主板: " + ComputerInfoTool.GetBoardManufacturer());
-            Print("主板: " + ComputerInfoTool.GetBoardProduct());
-            Print("主板序列号: " + ComputerInfoTool.GetBoardSerialNumber());
+            List<Tuple<string, string>> harddiskinfo = ComputerInfoTool.HardDiskInfo();
+            harddiskinfo.ForEach(x =>
+            {
+                Print("硬盘 序列号 " + x.Item1 + " 型号 " + x.Item2);
+            });
+            var osinfo = ComputerInfoTool.OsInfo();
+            Print("操作系统: " + osinfo.Item1 + " " + osinfo.Item2+" "+osinfo.Item3);
+            Print("系统类型: " + ComputerInfoTool.SystemType());
+            Print("计算机名: " + ComputerInfoTool.MachineName());
+            Print("系统所有用户名: " + string.Join(",", ComputerInfoTool.UserNames()));
+            var boardinfo = ComputerInfoTool.BoardInfo();
+            Print("主板 制造商 " + boardinfo.Item1 + " 型号 " + boardinfo.Item2 + " 序列号 " + boardinfo.Item3);
         }
         }
         private void Print(string s)
         private void Print(string s)
         {
         {

+ 10 - 3
Fork.Net/Y.Utils/NetUtils/NetInfoUtils/NetcardInfoTool.cs

@@ -1,4 +1,11 @@
-using System;
+//************************************************************************
+//      https://github.com/yuzhengyang
+//      author:     yuzhengyang
+//      date:       2017.3.29 - 2017.7.12
+//      desc:       网卡信息工具类
+//      Copyright (c) yuzhengyang. All rights reserved.
+//************************************************************************
+using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Diagnostics;
 using System.Linq;
 using System.Linq;
@@ -14,7 +21,7 @@ namespace Y.Utils.NetUtils.NetInfoUtils
     {
     {
         /// <summary>
         /// <summary>
         /// 获取网卡信息
         /// 获取网卡信息
-        /// 名称,描述,物理地址(Mac),Ip地址,网关地址
+        /// 【名称、描述、物理地址(Mac)、Ip地址、网关地址】
         /// </summary>
         /// </summary>
         /// <returns></returns>
         /// <returns></returns>
         public static List<Tuple<string, string, string, string, string>> GetNetworkCardInfo()
         public static List<Tuple<string, string, string, string, string>> GetNetworkCardInfo()
@@ -34,7 +41,7 @@ namespace Y.Utils.NetUtils.NetInfoUtils
                             item.GetIPProperties().UnicastAddresses[1].Address.ToString() : null;
                             item.GetIPProperties().UnicastAddresses[1].Address.ToString() : null;
                         string _gateway = item.GetIPProperties().GatewayAddresses.Count >= 1 ?
                         string _gateway = item.GetIPProperties().GatewayAddresses.Count >= 1 ?
                             item.GetIPProperties().GatewayAddresses[0].Address.ToString() : null;
                             item.GetIPProperties().GatewayAddresses[0].Address.ToString() : null;
-                        result.Add(new Tuple<string, string, string, string, string>(_name, _desc, _mac, _ip, _gateway));
+                        result.Add(new Tuple<string, string, string, string, string>(_name.Trim(), _desc.Trim(), _mac.Trim(), _ip.Trim(), _gateway.Trim()));
                     }
                     }
                 }
                 }
                 return result;
                 return result;

+ 147 - 146
Fork.Net/Y.Utils/WindowsUtils/InfoUtils/ComputerInfoTool.cs

@@ -1,7 +1,7 @@
 //************************************************************************
 //************************************************************************
 //      https://github.com/yuzhengyang
 //      https://github.com/yuzhengyang
 //      author:     yuzhengyang
 //      author:     yuzhengyang
-//      date:       2017.3.29 - 2017.7.12
+//      date:       2017.3.29 - 2017.7.13
 //      desc:       计算机信息
 //      desc:       计算机信息
 //      Copyright (c) yuzhengyang. All rights reserved.
 //      Copyright (c) yuzhengyang. All rights reserved.
 //************************************************************************
 //************************************************************************
@@ -10,6 +10,7 @@ using System.Collections.Generic;
 using System.Management;
 using System.Management;
 using System.Net.NetworkInformation;
 using System.Net.NetworkInformation;
 using System.Runtime.InteropServices;
 using System.Runtime.InteropServices;
+using Y.Utils.NetUtils.NetInfoUtils;
 
 
 namespace Y.Utils.WindowsUtils.InfoUtils
 namespace Y.Utils.WindowsUtils.InfoUtils
 {
 {
@@ -19,53 +20,40 @@ namespace Y.Utils.WindowsUtils.InfoUtils
     public static class ComputerInfoTool
     public static class ComputerInfoTool
     {
     {
         const string UNKNOW = "unknow";
         const string UNKNOW = "unknow";
+
         /// <summary>
         /// <summary>
-        /// CPU 序列号
+        /// CPU 信息
+        /// 【序列号、型号】
         /// </summary>
         /// </summary>
         /// <returns></returns>
         /// <returns></returns>
-        public static string CPUID()
+        public static Tuple<string, string> CpuInfo()
         {
         {
-            ManagementClass mc = null;
-            ManagementObjectCollection moc = null;
-            string ProcessorId = "";
             try
             try
             {
             {
-                mc = new ManagementClass("Win32_Processor");
-                moc = mc.GetInstances();
-                foreach (ManagementObject mo in moc)
+                Tuple<string, string> result = null;
+                ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from  Win32_Processor");
+                foreach (ManagementObject item in searcher.Get())
                 {
                 {
-                    ProcessorId = mo.Properties["ProcessorId"].Value.ToString();
+                    result = new Tuple<string, string>(
+                        item["ProcessorId"].ToString().Trim(),
+                        item["Name"].ToString().Trim());
+                    break;
                 }
                 }
-                return ProcessorId;
+                return result;
             }
             }
             catch (Exception e)
             catch (Exception e)
             {
             {
-                return UNKNOW;
-            }
-            finally
-            {
-                if (moc != null) moc.Dispose();
-                if (mc != null) mc.Dispose();
+                return null;
             }
             }
         }
         }
         /// <summary>
         /// <summary>
-        /// CPU 型号
+        /// 网卡信息
+        /// 【名称、描述、物理地址(Mac)、Ip地址、网关地址】
         /// </summary>
         /// </summary>
         /// <returns></returns>
         /// <returns></returns>
-        public static string CPUModel()
+        public static List<Tuple<string, string, string, string, string>> NetworkCardInfo()
         {
         {
-            try
-            {
-                string result = "";
-                ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from  Win32_Processor");
-                foreach (ManagementObject item in searcher.Get())
-                {
-                    result = item["Name"].ToString();
-                }
-                return result;
-            }
-            catch
-            { return UNKNOW; }
+            return NetCardInfoTool.GetNetworkCardInfo();
         }
         }
         /// <summary>
         /// <summary>
         /// 显卡型号
         /// 显卡型号
@@ -79,7 +67,7 @@ namespace Y.Utils.WindowsUtils.InfoUtils
                 ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from  Win32_VideoController");
                 ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from  Win32_VideoController");
                 foreach (ManagementObject item in searcher.Get())
                 foreach (ManagementObject item in searcher.Get())
                 {
                 {
-                    rs.Add(item["Name"].ToString());
+                    rs.Add(item["Name"].ToString().Trim());
                 }
                 }
                 return rs;
                 return rs;
             }
             }
@@ -97,7 +85,7 @@ namespace Y.Utils.WindowsUtils.InfoUtils
                 ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from  Win32_SoundDevice");
                 ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from  Win32_SoundDevice");
                 foreach (ManagementObject item in searcher.Get())
                 foreach (ManagementObject item in searcher.Get())
                 {
                 {
-                    rs.Add(item["Name"].ToString());
+                    rs.Add(item["Name"].ToString().Trim());
                 }
                 }
                 return rs;
                 return rs;
             }
             }
@@ -118,6 +106,7 @@ namespace Y.Utils.WindowsUtils.InfoUtils
                 foreach (ManagementObject mo in moc)
                 foreach (ManagementObject mo in moc)
                 {
                 {
                     ulong.TryParse(mo["TotalPhysicalMemory"].ToString(), out size);
                     ulong.TryParse(mo["TotalPhysicalMemory"].ToString(), out size);
+                    break;
                 }
                 }
             }
             }
             catch { }
             catch { }
@@ -137,115 +126,145 @@ namespace Y.Utils.WindowsUtils.InfoUtils
                 foreach (ManagementObject mo in moc)
                 foreach (ManagementObject mo in moc)
                 {
                 {
                     ulong.TryParse(mo["FreePhysicalMemory"].ToString(), out size);
                     ulong.TryParse(mo["FreePhysicalMemory"].ToString(), out size);
+                    break;
                 }
                 }
             }
             }
             catch { }
             catch { }
             return size;
             return size;
         }
         }
         /// <summary>
         /// <summary>
-        /// 硬盘型号
+        /// 硬盘信息
+        /// 【序列号、型号】
         /// </summary>
         /// </summary>
         /// <returns></returns>
         /// <returns></returns>
-        public static List<string> HardDiskModel()
+        public static List<Tuple<string, string>> HardDiskInfo()
         {
         {
+            List<Tuple<string, string>> result = new List<Tuple<string, string>>();
             try
             try
             {
             {
-                List<string> rs = new List<string>();
                 ManagementClass mc = new ManagementClass("Win32_DiskDrive");
                 ManagementClass mc = new ManagementClass("Win32_DiskDrive");
                 ManagementObjectCollection moc = mc.GetInstances();
                 ManagementObjectCollection moc = mc.GetInstances();
                 foreach (ManagementObject mo in moc)
                 foreach (ManagementObject mo in moc)
                 {
                 {
-                    rs.Add(mo.Properties["Model"].Value.ToString() + "--" + mo.Properties["SerialNumber"].Value.ToString());
-                    //result = (string);
-                    //if (!result.ToLower().Contains("usb"))
-                    //    return result;
+                    result.Add(new Tuple<string, string>(
+                        mo.Properties["SerialNumber"].Value.ToString().Trim(),
+                        mo.Properties["Model"].Value.ToString().Trim()));
                 }
                 }
-                return rs;
+                return result;
+            }
+            catch (Exception e)
+            {
+                return result;
             }
             }
-            catch { return null; }
         }
         }
-        #region 获取硬盘ID
-        public static string GetHDiskID(string hdModel)
+        /// <summary>
+        /// 计算机名
+        /// </summary>
+        /// <returns></returns>
+        public static string MachineName()
         {
         {
             try
             try
             {
             {
-                string result = "";
-                ManagementClass mc = new ManagementClass("Win32_DiskDrive");
-                ManagementObjectCollection moc = mc.GetInstances();
-                foreach (ManagementObject mo in moc)
-                {
-                    if (mo.Properties["Model"].Value.ToString().Contains(hdModel))
-                    {
-                        result = (string)mo.Properties["SerialNumber"].Value;
-                    }
-                }
-                return result.Trim();
+                return Environment.MachineName;
             }
             }
             catch
             catch
             { return UNKNOW; }
             { return UNKNOW; }
         }
         }
-        #endregion
-        #region 获取操作系统
-        public static string GetOS()
+        /// <summary>
+        /// 主板信息
+        /// 【制造商、型号、序列号】
+        /// </summary>
+        /// <returns></returns>
+        public static Tuple<string, string, string> BoardInfo()
         {
         {
             try
             try
             {
             {
-                string result = "";
-                ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
+                Tuple<string, string, string> result = null;
+                ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
                 foreach (ManagementObject MyObject in MySearcher.Get())
                 foreach (ManagementObject MyObject in MySearcher.Get())
                 {
                 {
-                    result = MyObject["Caption"].ToString();
+                    result = new Tuple<string, string, string>(
+                        MyObject["Manufacturer"].ToString().Trim(),
+                        MyObject["Product"].ToString().Trim(),
+                        MyObject["SerialNumber"].ToString().Trim());
+                    break;
                 }
                 }
                 return result;
                 return result;
             }
             }
-            catch
-            { return UNKNOW; }
+            catch (Exception e)
+            { return null; }
         }
         }
-        #endregion
-        #region 获取系统类型
-        public static string GetSystemType()
+        /// <summary>
+        /// 操作系统信息
+        /// 【系统名称、系统路劲、安装时间】
+        /// </summary>
+        /// <returns></returns>
+        public static Tuple<string, string, DateTime> OsInfo()
         {
         {
             try
             try
             {
             {
-                string result = "";
-                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
-                ManagementObjectCollection moc = mc.GetInstances();
-                foreach (ManagementObject mo in moc)
+                Tuple<string, string, DateTime> result = null;
+                ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
+                foreach (ManagementObject MyObject in MySearcher.Get())
                 {
                 {
+                    string caption = MyObject["Caption"].ToString().Trim();
+                    string windowsdirectory = MyObject["WindowsDirectory"].ToString().Trim();
+                    string installdate = MyObject["InstallDate"].ToString().Trim();
+                    DateTime dtinstalldate = DateTime.MinValue;
 
 
-                    result = mo["SystemType"].ToString();
+                    if (installdate.Length >= 14)
+                    {
+                        installdate = installdate.Substring(0, 14);
+                        installdate = installdate.Insert(12, ":");
+                        installdate = installdate.Insert(10, ":");
+                        installdate = installdate.Insert(8, " ");
+                        installdate = installdate.Insert(6, "-");
+                        installdate = installdate.Insert(4, "-");
+                        DateTime.TryParse(installdate, out dtinstalldate);
+                    }
 
 
+                    result = new Tuple<string, string, DateTime>(
+                        caption, windowsdirectory, dtinstalldate);
+                    break;
                 }
                 }
                 return result;
                 return result;
             }
             }
-            catch
-            { return UNKNOW; }
+            catch (Exception e)
+            { return null; }
         }
         }
-        #endregion
-        #region 获取系统安装日期
-        public static string GetSystemInstallDate()
+        /// <summary>
+        /// 系统类型
+        /// </summary>
+        /// <returns></returns>
+        public static string SystemType()
         {
         {
             try
             try
             {
             {
                 string result = "";
                 string result = "";
-                ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
-                foreach (ManagementObject MyObject in MySearcher.Get())
+                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
+                ManagementObjectCollection moc = mc.GetInstances();
+                foreach (ManagementObject mo in moc)
                 {
                 {
-                    result = MyObject["InstallDate"].ToString().Substring(0, 14);
-                    result = result.Insert(12, ":");
-                    result = result.Insert(10, ":");
-                    result = result.Insert(8, " ");
-                    result = result.Insert(6, "-");
-                    result = result.Insert(4, "-");
+                    result = mo["SystemType"].ToString();
                 }
                 }
                 return result;
                 return result;
             }
             }
             catch
             catch
             { return UNKNOW; }
             { return UNKNOW; }
         }
         }
-        #endregion
-        #region 获取登陆用户名
-        public static string GetLoginUserName()
+        /// <summary>
+        /// 当前用户名
+        /// </summary>
+        /// <returns></returns>
+        public static string UserName()
+        {
+            return Environment.UserName;
+        }
+        /// <summary>
+        /// 当前用户名
+        /// </summary>
+        /// <returns></returns>
+        public static string UserName2()
         {
         {
             try
             try
             {
             {
@@ -261,22 +280,12 @@ namespace Y.Utils.WindowsUtils.InfoUtils
             catch
             catch
             { return UNKNOW; }
             { return UNKNOW; }
         }
         }
-        #endregion
-        #region 获取计算机名
-        public static string GetComputerName()
-        {
-            try
-            {
-                string result = "";
-                result = System.Environment.GetEnvironmentVariable("ComputerName");
-                return result;
-            }
-            catch
-            { return UNKNOW; }
-        }
-        #endregion
         #region 获取所有用户名
         #region 获取所有用户名
-        public static List<string> GetSysUserNames()
+        /// <summary>
+        /// 所有用户名称
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> UserNames()
         {
         {
             int EntriesRead;
             int EntriesRead;
             int TotalEntries;
             int TotalEntries;
@@ -305,69 +314,61 @@ namespace Y.Utils.WindowsUtils.InfoUtils
             public string Username;
             public string Username;
         }
         }
         [DllImport("Netapi32.dll ")]
         [DllImport("Netapi32.dll ")]
-        extern static int NetUserEnum([MarshalAs(UnmanagedType.LPWStr)]
-        string servername,
-                int level,
-                int filter,
-                out IntPtr bufptr,
-                int prefmaxlen,
-                out int entriesread,
-                out int totalentries,
-                out int resume_handle);
+        extern static int NetUserEnum([MarshalAs(UnmanagedType.LPWStr)] string servername, int level, int filter, out IntPtr bufptr, int prefmaxlen, out int entriesread, out int totalentries, out int resume_handle);
 
 
         [DllImport("Netapi32.dll ")]
         [DllImport("Netapi32.dll ")]
         extern static int NetApiBufferFree(IntPtr Buffer);
         extern static int NetApiBufferFree(IntPtr Buffer);
         #endregion
         #endregion
-        #region 获取主板制造商
-        public static string GetBoardManufacturer()
+
+        /// <summary>
+        /// 域名
+        /// </summary>
+        /// <returns></returns>
+        public static string UserDomainName()
         {
         {
             try
             try
             {
             {
-                string result = "";
-                ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
-                foreach (ManagementObject MyObject in MySearcher.Get())
-                {
-                    result = MyObject["Manufacturer"].ToString();
-                }
-                return result;
+                return Environment.UserDomainName;
             }
             }
             catch
             catch
             { return UNKNOW; }
             { return UNKNOW; }
         }
         }
-        #endregion
-        #region 获取主板型号
-        public static string GetBoardProduct()
+        /// <summary>
+        /// 系统启动后的毫秒数
+        /// </summary>
+        /// <returns></returns>
+        public static int TickCount()
         {
         {
-            try
-            {
-                string result = "";
-                ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
-                foreach (ManagementObject MyObject in MySearcher.Get())
-                {
-                    result = MyObject["Product"].ToString();
-                }
-                return result;
-            }
-            catch
-            { return UNKNOW; }
+            return Environment.TickCount;
         }
         }
-        #endregion
-        #region 获取主板序列号
-        public static string GetBoardSerialNumber()
+        /// <summary>
+        /// 处理器数
+        /// </summary>
+        /// <returns></returns>
+        public static int ProcessorCount()
+        {
+            return Environment.ProcessorCount;
+        }
+        /// <summary>
+        /// 平台标识和版本号
+        /// </summary>
+        /// <returns></returns>
+        public static string OSVersion()
         {
         {
             try
             try
             {
             {
-                string result = "";
-                ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
-                foreach (ManagementObject MyObject in MySearcher.Get())
-                {
-                    result = MyObject["SerialNumber"].ToString();
-                }
-                return result;
+                return Environment.OSVersion.ToString();
             }
             }
             catch
             catch
             { return UNKNOW; }
             { return UNKNOW; }
         }
         }
-        #endregion
+        /// <summary>
+        /// 64位操作系统
+        /// </summary>
+        /// <returns></returns>
+        public static bool Is64BitOperatingSystem()
+        {
+            return Environment.Is64BitOperatingSystem;
+        }
     }
     }
 }
 }