静以思

Microsoft .NET[C#] - SQL SERVER - ORACLE - Web Design

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

前段时间,公司做一个系统检测程序时,遇到对客户端PC硬件、ActiveX组件的检测安装,由于之前没遇到过这种问题,所以当时一下子心里没底做,于时在网上找资料花了不少时间,下面我就把这些代码共享一下,希望对大家以后的工作中遇到此类问题有所帮助。。。

     private string strOSCode = "UNKNOWN";

        public string OSCode
        {
            get { return this.strOSCode; }
        }

        /// <summary>
        /// 内存信息
        /// </summary>
        /// <param name="lpBuffer"></param>
        [DllImport("kernel32.dll")]
        public static extern void GlobalMemoryStatus(ref MEMORYSTATUS lpBuffer);


        /// <summary>
        /// CPU名称
        /// </summary>
        /// <returns></returns>
        public string GetCPUName()
        {
            RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"HARDWARE\DESCRIPTION\System\CentralProcessor\0");

            object obj = rk.GetValue("ProcessorNameString");
            string CPUName = (string)obj;
            return CPUName.TrimStart();
        }

        /// <summary>
        /// CPU频率
        /// </summary>
        /// <returns></returns>
        public int GetCPUFrequency()
        {
            RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"HARDWARE\DESCRIPTION\System\CentralProcessor\0");

            object obj = rk.GetValue("~MHz");
            int CPUFrequency = (int)obj;
            return CPUFrequency;
        }

        /// <summary>
        /// 获得操作系统信息
        /// </summary>
        /// <returns></returns>
        public string GetOperationSystemInName()
        {
            OperatingSystem os = System.Environment.OSVersion;
            string osName = "UNKNOWN";           
            switch (os.Platform)
            {
                case PlatformID.Win32Windows:
                    switch (os.Version.Minor)
                    {
                        case 0: osName = "Windows 95"; this.strOSCode = "95"; break;
                        case 10: osName = "Windows 98"; this.strOSCode = "98"; break;
                        case 90: osName = "Windows ME"; this.strOSCode = "ME"; break;
                    }
                    break;
                case PlatformID.Win32NT:
                    switch (os.Version.Major)
                    {
                        case 3: osName = "Windws NT 3.51"; this.strOSCode = "3.51"; break;
                        case 4: osName = "Windows NT 4"; this.strOSCode = "4"; break;
                        case 5: if (os.Version.Minor == 0)
                            {
                                osName = "Windows 2000";
                                this.strOSCode = "2000";
                            }
                            else if (os.Version.Minor == 1)
                            {
                                osName = "Windows XP";
                                this.strOSCode = "XP";
                            }
                            else if (os.Version.Minor == 2)
                            {
                                osName = "Windows Server 2003";
                                this.strOSCode = "2003";
                            }
                            break;
                        case 6: osName = "Longhorn"; this.strOSCode = "Longhorn"; break;
                    }
                    break;
            }
            //return String.Format("{0},{1}", osName, os.Version.ToString());
            return String.Format("{0}", osName);
        }

        /// <summary>
        /// Get Mac Address
        /// </summary>
        /// <returns></returns>
        public string GetMacAddress()
        {
            ManagementClass adapters = new ManagementClass("Win32_NetworkAdapterConfiguration");
            string MACAddress = "unknown";
            foreach (ManagementObject adapter in adapters.GetInstances())
            {
                if ((bool)adapter["IPEnabled"] == true)
                {
                    MACAddress = adapter.Properties["MACAddress"].Value.ToString();
                    break;
                }
            }
            return MACAddress;
        } 

      /// 安装/卸载ActiveX 组件
      using System.Diagnostics;
      Process.Start("regsvr32.exe", 组件.dll/组件.ocx);
      Process.Start("regsvr32.exe", 组件.dll/组件.ocx /u);
     /// 解压组件CAB 包
     Process.Start("expand.exe", 组件.CAB + " \f " + 要解压到硬盘的目录); 
   

posted on 2008-01-02 16:24  plife  阅读(224)  评论(0)    收藏  举报