信息发布软件,b2b软件,广告发布软件

标题: VB.NET中如何得到计算机硬件信息和实例教程 [打印本页]

作者: 信息发布软件    时间: 2017-2-26 17:21
标题: VB.NET中如何得到计算机硬件信息和实例教程

本文汇集了在.net中得到计算机硬件信息的一些功能。

  得到显示器分辨率

  Dim X As Short = System.<a href="http://dev.21tx.com/os/windows/" target="_blank">Windows</a>.Forms.Screen.PrimaryScreen.Bounds.Width

  Dim Y As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height

  MsgBox("您的显示器分辨率是:" & X & " X " & Y)

  得到特殊文件夹的路径

  '"Desktop"桌面文件夹路径

  MsgBox(Environment.GetFold<a href="http://dev.21tx.com/corp/solution/erp/" target="_blank">ERP</a>ath(Environment.SpecialFolder.DesktopDirectory))

  '"Favorites"收藏夹路径

  MsgBox(Environment.GetFolderPath(Environment.SpecialFolder.Favorites))

  '"Application Data"路径

  MsgBox(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData))

  '通用写法

  'Dim SPEC As String = Environment.GetFolderPath(Environment.SpecialFolder.XXXXXXX)

  'XXXXXXX是特殊文件夹的名字

  得到操作系统版本信息

  MsgBox(Environment.OSVersion.ToString)

  得到当前登录的用户名

  MsgBox(Environment.UserName)

  得到当前应用程序的路径

  MsgBox(Environment.CurrentDirectory)

  打开和关闭CD-ROM

  '先新建模块

  Module mciAPIModule

  Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _

  (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _

  ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer

  End Module

  '打开CD-ROM

  Dim lRet As Long

  lRet = mciSendString("set cdAudio door open", 0&, 0, 0)

  '关闭CD-ROM

  Dim lRet As Long

  lRet = mciSendString("set cdAudio door Closed", 0&, 0, 0)

  '更多请参见

  http://msdn.microsoft.com/librar ... d/mmcmdstr_8eyc.asp

  得到计算机IP和计算机全名

  Dim MYIP As System.Net.IPHostEntry = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName)

  MsgBox("您的IP地址:" & (MYIP.AddressList.GetValue(0).ToString))

  MsgBox("您的计算机全名:" & (MYIP.HostName.ToString))

  使用win32_operatingSystem (wmi Class)得到计算机信息

  '添加ListBox在Form1_Load事件里,并引用system.Managment

  Dim opSearch As New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")

  Dim opInfo As ManagementObject

  For Each opInfo In opSearch.Get()

  ListBox1.Items.Add("Name: " & opInfo("name").ToString())

  ListBox1.Items.Add("Version: " & opInfo("version").ToString())

  ListBox1.Items.Add("Manufacturer: " & opInfo("manufacturer").ToString())

  ListBox1.Items.Add("Computer name: " & opInfo("csname").ToString())

  ListBox1.Items.Add("Windows Directory: " & opInfo("windowsdirectory").ToString())

  Next

  列出计算机安装的全部字体,并添加到ListBox

  '新建Form并添加ListBox和Button

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  Dim fntCollection As InstalledFontCollection = New InstalledFontCollection()

  Dim fntFamily() As FontFamily

  fntFamily = fntCollection.Families

  ListBox1.Items.Clear()

  Dim i As Integer = 0

  For i = 0 To fntFamily.Length - 1

  ListBox1.Items.Add(fntFamily(i).Name)

  Next

  End Sub

  使用Win32_Processor列出处理器的信息

  Imports System.Management

  Public Class Form1

  Inherits System.Windows.Forms.Form

  #Region " Windows 窗体设计器生成的代码 "

  Public Sub New()

  MyBase.New()

  '该调用是 Windows 窗体设计器所必需的。

  InitializeComponent()

  '在 InitializeComponent() 调用之后添加任何初始化

  End Sub

  '窗体重写 dispose 以清理组件列表。

  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

  If disposing Then

  If Not (components Is Nothing) Then

  components.Dispose()

  End If

  End If

  MyBase.Dispose(disposing)

  End Sub

  'Windows 窗体设计器所必需的

  Private components As System.ComponentModel.IContainer

  '注意: 以下过程是 Windows 窗体设计器所必需的

  '可以使用 Windows 窗体设计器修改此过程。

  '不要使用代码编辑器修改它。

  Friend WithEvents ListBox1 As System.Windows.Forms.ListBox

  Friend WithEvents Button1 As System.Windows.Forms.Button

  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

  Me.ListBox1 = New System.Windows.Forms.ListBox

  Me.Button1 = New System.Windows.Forms.Button

  Me.SuspendLayout()

  '

  'ListBox1

  '

  Me.ListBox1.Location = New System.Drawing.Point(8, 8)

  Me.ListBox1.Name = "ListBox1"

  Me.ListBox1.Size = New System.Drawing.Size(280, 186)

  Me.ListBox1.TabIndex = 0

  '

  'Button1

  '

  Me.Button1.Location = New System.Drawing.Point(56, 208)

  Me.Button1.Name = "Button1"

  Me.Button1.Size = New System.Drawing.Size(168, 32)

  Me.Button1.TabIndex = 1

  Me.Button1.Text = "装载计算机处理器信息"

  '

  'Form1

  '

  Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

  Me.ClientSize = New System.Drawing.Size(296, 254)

  Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button1, Me.ListBox1})

  Me.Text = "计算机处理器信息"

  Me.ResumeLayout(False)

  End Sub

  #End Region

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

  Handles Button1.Click

  Dim ProcQuery As New SelectQuery("Win32_Processor")

  Dim ProcSearch As New ManagementObjectSearcher(ProcQuery)

  Dim ProcInfo As ManagementObject

  For Each ProcInfo In ProcSearch.Get()

  Call processorfamily(ProcInfo("Family").ToString)

  ListBox1.Items.Add("Description: " & ProcInfo("Description").ToString())

  ListBox1.Items.Add("caption: " & ProcInfo("caption").ToString())

  ListBox1.Items.Add("Architecture: " & ProcInfo("Architecture").ToString())

  Call processortype(ProcInfo("ProcessorType").ToString())

  Call CpuStat(ProcInfo("CpuStatus").ToString)

  ListBox1.Items.Add("MaxClockSpeed: " & ProcInfo("MaxClockSpeed").ToString() & "MHZ")

  ListBox1.Items.Add("L2CacheSpeed: " & ProcInfo("L2CacheSpeed").ToString() & "MHZ")

  ListBox1.Items.Add("ExtClock: " & ProcInfo("L2CacheSpeed").ToString() & "MHZ")

  ListBox1.Items.Add("ProcessorId: " & ProcInfo("ProcessorId").ToString())

  ListBox1.Items.Add("AddressWidth: " & ProcInfo("AddressWidth").ToString() & "Bits")

  ListBox1.Items.Add("DataWidth: " & ProcInfo("DataWidth").ToString() & "Bits")

  ListBox1.Items.Add("Version: " & ProcInfo("Version").ToString())

  ListBox1.Items.Add("ExtClock: " & ProcInfo("ExtClock").ToString() & "MHZ")

  Next

  End Sub

  Function processorfamily(ByVal procssfam)

  Dim processtype

  Select Case procssfam

  Case 1

  processtype = "Other"

  Case 2

  processtype = "Unknown "

  Case 3

  processtype = "8086 "

  Case 4

  processtype = "80286 "

  Case 5

  processtype = "80386 "

  Case 6

  processtype = "80486 "

  Case 7

  processtype = "8087 "

  Case 8

  processtype = "80287 "

  Case 9

  processtype = "80387 "

  Case 10

  processtype = "80487 "

  Case 11

  processtype = "Pentium brand "

  Case 12

  processtype = "Pentium Pro "

  Case 13

  processtype = "Pentium II "

  Case 14

  processtype = "Pentium processor with MMX technology "

  Case 15

  processtype = "Celeron "

  Case 16

  processtype = "Pentium II Xeon "

  Case 17

  processtype = "Pentium III "

  Case 18

  processtype = "M1 Family "

  Case 19

  processtype = "M2 Family "

  Case 24

  processtype = "K5 Family "

  Case 25

  processtype = "K6 Family "

  Case 26

  processtype = "K6-2 "

  Case 27

  processtype = "K6-3 "

  Case 28

  processtype = "AMD Athlon Processor Family "

  Case 29

  processtype = "AMD Duron Processor "

  Case 30

  processtype = "AMD2900 Family "

  Case 31

  processtype = "K6-2+ "

  Case 32

  processtype = "Power PC Family "

  Case 33

  processtype = "Power PC 601 "

  Case 34

  processtype = "Power PC 603 "

  Case 35

  processtype = "Power PC 603+ "

  Case 36

  processtype = "Power PC 604 "

  Case 37

  processtype = "Power PC 620 "

  Case 38

  processtype = "Power PC X704 "

  Case 39

  processtype = "Power PC 750 "

  Case 48

  processtype = "Alpha Family "

  Case 49

  processtype = "Alpha 21064 "

  Case 50

  processtype = "Alpha 21066 "

  Case 51

  processtype = "Alpha 21164 "

  Case 52

  processtype = "Alpha 21164PC "

  Case 53

  processtype = "Alpha 21164a "

  Case 54

  processtype = "Alpha 21264 "

  Case 55

  processtype = "Alpha 21364 "

  Case 64

  processtype = "MIPS Family "

  Case 65

  processtype = "MIPS R4000 "

  Case 66

  processtype = "MIPS R4200 "

  Case 67

  processtype = "MIPS R4400 "

  Case 68

  processtype = "MIPS R4600 "

  Case 69

  processtype = "MIPS R10000 "

  Case 80

  processtype = "SPARC Family "

  Case 81

  processtype = "SuperSPARC "

  Case 82

  processtype = "microSPARC II "

  Case 83

  processtype = "microSPARC IIep "

  Case 84

  processtype = "UltraSPARC "

  Case 85

  processtype = "UltraSPARC II "

  Case 86

  processtype = "UltraSPARC IIi "

  Case 87

  processtype = "UltraSPARC III "

  Case 88

  processtype = "UltraSPARC IIIi "

  Case 96

  processtype = "68040 "

  Case 97

  processtype = "68xxx Family "

  Case 98

  processtype = "68000 "

  Case 99

  processtype = "68010 "

  Case 100

  processtype = "68020 "

  Case 101

  processtype = "68030 "

  Case 112

  processtype = "Hobbit Family "

  Case 120

  processtype = "Crusoe TM5000 Family "

  Case 121

  processtype = "Crusoe TM3000 Family "

  Case 128

  processtype = "Weitek "

  Case 130

  processtype = "Itanium Processor "

  Case 144

  processtype = "PA-RISC Family "

  Case 145

  processtype = "PA-RISC 8500 "

  Case 146

  processtype = "PA-RISC 8000 "

  Case 147

  processtype = "PA-RISC 7300LC "

  Case 148

  processtype = "PA-RISC 7200 "

  Case 149

  processtype = "PA-RISC 7100LC "

  Case 150

  processtype = "PA-RISC 7100 "

  Case 160

  processtype = "V30 Family "

  Case 176

  processtype = "Pentium III Xeon "

  Case 177

  processtype = "Pentium III Processor with Intel SpeedStep Technology "

  Case 178

  processtype = "Pentium 4 "

  Case 179

  processtype = "Intel Xeon "

  Case 180

  processtype = "AS400 Family "

  Case 181

  processtype = "Intel Xeon processor MP "

  Case 182

  processtype = "AMD AthlonXP Family "

  Case 183

  processtype = "AMD AthlonMP Family "

  Case 184

  processtype = "Intel Itanium 2 "

  Case 185

  processtype = "AMD Opteron Family "

  Case 190

  processtype = "K7 "

  Case 200

  processtype = "IBM390 Family "

  Case 201

  processtype = "G4 "

  Case 202

  processtype = "G5 "

  Case 250

  processtype = "i860 "

  Case 251

  processtype = "i960 "

  Case 260

  processtype = "SH-3 "

  Case 261

  processtype = "SH-4 "

  Case 280

  processtype = "arm "

  Case 281

  processtype = "Strongarm "

  Case 300

  processtype = "6x86 "

  Case 301

  processtype = "MediaGX "

  Case 302

  processtype = "MII "

  Case 320

  processtype = "WinChip "

  Case 350

  processtype = "DSP "

  Case 500

  processtype = "Video Processor "

  End Select

  ListBox1.Items.Add("Family: " & processtype)

  End Function

  Function CpuStat(ByVal CpuStNUM)

  Dim stat


  Select Case CpuStNUM

  Case 0

  stat = "Unknown "

  Case 1

  stat = "CPU Enabled "

  Case 2

  stat = "CPU Disabled by User via BIOS Setup "

  Case 3

  stat = "CPU Disabled By BIOS (POST Error) "

  Case 4

  stat = "CPU is Idle "

  Case 5

  stat = "Reserved "

  Case 6

  stat = "Reserved "

  Case 7

  stat = "Other "

  End Select

  ListBox1.Items.Add("CpuStatus: " & stat)

  End Function

  Function processortype(ByVal proctypenum)

  Dim proctype

  Select Case proctypenum

  Case 1

  proctype = "Other "

  Case 2

  proctype = "Unknown "

  Case 3

  proctype = "Central Processor "

  Case 4

  proctype = "Math Processor "

  Case 5

  proctype = "DSP Processor "

  Case 6

  proctype = "Video Processor "

  End Select

  ListBox1.Items.Add("Processor Type: " & proctype)

  End Function

  End Class

  得到CD-ROM信息

  Imports System.Management

  Public Class Form1

  Inherits System.Windows.Forms.Form

  #Region " Windows 窗体设计器生成的代码 "

  Public Sub New()

  MyBase.New()

  '该调用是 Windows 窗体设计器所必需的。

  InitializeComponent()

  '在 InitializeComponent() 调用之后添加任何初始化

  End Sub

  '窗体重写 dispose 以清理组件列表。

  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

  If disposing Then

  If Not (components Is Nothing) Then

  components.Dispose()

  End If

  End If

  MyBase.Dispose(disposing)

  End Sub

  'Windows 窗体设计器所必需的

  '注意: 以下过程是 Windows 窗体设计器所必需的

  '可以使用 Windows 窗体设计器修改此过程。

  '不要使用代码编辑器修改它。

  Private components As System.ComponentModel.IContainer

  Friend WithEvents ListBox1 As System.Windows.Forms.ListBox

  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

  Me.ListBox1 = New System.Windows.Forms.ListBox

  Me.SuspendLayout()

  '

  'ListBox1

  '

  Me.ListBox1.Location = New System.Drawing.Point(24, 16)

  Me.ListBox1.Name = "ListBox1"

  Me.ListBox1.Size = New System.Drawing.Size(416, 173)

  Me.ListBox1.TabIndex = 0

  '

  'Form1

  '

  Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

  Me.ClientSize = New System.Drawing.Size(456, 206)

  Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListBox1})

  Me.Name = "Form1"

  Me.Text = "Form1"

  Me.ResumeLayout(False)

  End Sub

  #End Region

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _

  Handles MyBase.Load

  On Error Resume Next

  Dim SoundDeviceQuery As New SelectQuery("Win32_CDROMDrive")

  Dim SoundDeviceSearch As New ManagementObjectSearcher(SoundDeviceQuery)

  Dim SoundDeviceInfo As ManagementObject

  For Each SoundDeviceInfo In SoundDeviceSearch.Get()

  Dim SizeInMBs As Long = (Val(SoundDeviceInfo("Size").ToString()))

  SizeInMBs = Int((SizeInMBs / (1024 * 1024)))

  ListBox1.Items.Add("CD-Rom Description: " & SoundDeviceInfo("caption").ToString())

  ListBox1.Items.Add("CD-Rom Manufacturer: " & SoundDeviceInfo("Manufacturer").ToString())

  ListBox1.Items.Add("CD-Rom Drive: " & SoundDeviceInfo("drive").ToString())

  ListBox1.Items.Add("CD-Rom Media Loaded: " & SoundDeviceInfo("MediaLoaded").ToString())

  ListBox1.Items.Add("CD-Rom Media Type: " & SoundDeviceInfo("MediaType").ToString())

  ListBox1.Items.Add("CD-Rom Volume Name: " & SoundDeviceInfo("VolumeName").ToString())

  ListBox1.Items.Add("CD-Rom Size: " & SizeInMBs & " MBytes")

  ListBox1.Items.Add("CD-Rom Status: " & SoundDeviceInfo("Status").ToString())

  ListBox1.Items.Add("CD-Rom MaxMediaSize: " & SoundDeviceInfo("MaxMediaSize").ToString())

  ListBox1.Items.Add("CD-Rom Id: " & SoundDeviceInfo("Id").ToString())

  ListBox1.Items.Add("CD-Rom TransferRate: "+Int(SoundDeviceInfo("TransferRate").ToString())+" KBs/秒")

  Next

  End Sub

  End Class

  得到硬盘信息

  Imports System.Management

  Public Class Form1

  Inherits System.Windows.Forms.Form

  #Region " Windows Form Designer generated code "

  Public Sub New()

  MyBase.New()

  InitializeComponent()

  End Sub

  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

  If disposing Then

  If Not (components Is Nothing) Then

  components.Dispose()

  End If

  End If

  MyBase.Dispose(disposing)

  End Sub

  Private components As System.ComponentModel.IContainer

  Friend WithEvents ListBox1 As System.Windows.Forms.ListBox

  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

  Me.ListBox1 = New System.Windows.Forms.ListBox

  Me.SuspendLayout()

  '

  'ListBox1

  '

  Me.ListBox1.Location = New System.Drawing.Point(8, 8)

  Me.ListBox1.Name = "ListBox1"

  Me.ListBox1.Size = New System.Drawing.Size(272, 212)

  Me.ListBox1.TabIndex = 0

  '

  'Form1

  '

  Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

  Me.ClientSize = New System.Drawing.Size(292, 238)

  Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListBox1})

  Me.Name = "Form1"

  Me.Text = "Form1"

  Me.ResumeLayout(False)

  End Sub

  #End Region

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  On Error Resume Next

  Dim HDDDeviceQuery As New SelectQuery("Win32_DiskDrive")

  Dim HDDDeviceSearch As New ManagementObjectSearcher(HDDDeviceQuery)

  Dim HDDDeviceInfo As ManagementObject

  For Each HDDDeviceInfo In HDDDeviceSearch.Get()

  ListBox1.Items.Add("HDD Description: " & HDDDeviceInfo("caption").ToString())

  ListBox1.Items.Add("HDD BytesPerSector: " & HDDDeviceInfo("BytesPerSector").ToString())

  ListBox1.Items.Add("HDD CompressionMethod: " & HDDDeviceInfo("CompressionMethod").ToString())

  ListBox1.Items.Add("HDD Index: " & HDDDeviceInfo("Index").ToString())

  ListBox1.Items.Add("HDD InstallDate: " & HDDDeviceInfo("InstallDate").ToString())

  ListBox1.Items.Add("HDD Manufacturer: " & HDDDeviceInfo("Manufacturer").ToString())

  ListBox1.Items.Add("HDD Partitions: " & HDDDeviceInfo("Partitions").ToString())

  ListBox1.Items.Add("HDD Size: " & Int(Val(HDDDeviceInfo("Size").ToString()) / 2 ^ 30) & "  GBytes")

  ListBox1.Items.Add("HDD TotalCylinders: " & HDDDeviceInfo("TotalCylinders").ToString())

  ListBox1.Items.Add("HDD TotalSectors: " & HDDDeviceInfo("TotalSectors").ToString())

  ListBox1.Items.Add("HDD TracksPerCylinder: " & HDDDeviceInfo("TracksPerCylinder").ToString())

  ListBox1.Items.Add("HDD TotalHeads: " & HDDDeviceInfo("TotalHeads").ToString())

  ListBox1.Items.Add("HDD TotalTracks: " & HDDDeviceInfo("TotalTracks").ToString())

  ListBox1.Items.Add("HDD SectorsPerTrack: " & HDDDeviceInfo("SectorsPerTrack").ToString())

  ListBox1.Items.Add("HDD SCSILogicalUnit: " & HDDDeviceInfo("SCSILogicalUnit").ToString())

  Next

  End Sub

  End Class

  得到声卡信息

  Imports System.Management

  Public Class Form1

  Inherits System.Windows.Forms.Form

  #Region " Windows Form Designer generated code "

  Public Sub New()

  MyBase.New()

  InitializeComponent()

  End Sub

  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

  If disposing Then

  If Not (components Is Nothing) Then

  components.Dispose()

  End If

  End If

  MyBase.Dispose(disposing)

  End Sub

  Private components As System.ComponentModel.IContainer

  Friend WithEvents ListBox1 As System.Windows.Forms.ListBox

  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

  Me.ListBox1 = New System.Windows.Forms.ListBox

  Me.SuspendLayout()

  '

  'ListBox1

  '

  Me.ListBox1.Location = New System.Drawing.Point(8, 8)

  Me.ListBox1.Name = "ListBox1"

  Me.ListBox1.Size = New System.Drawing.Size(272, 212)

  Me.ListBox1.TabIndex = 0

  '

  'Form1

  '

  Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

  Me.ClientSize = New System.Drawing.Size(292, 238)

  Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListBox1})

  Me.Name = "Form1"

  Me.Text = "Form1"

  Me.ResumeLayout(False)

  End Sub

  #End Region

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  Dim SoundDeviceQuery As New SelectQuery("Win32_SoundDevice")

  Dim SoundDeviceSearch As New ManagementObjectSearcher(SoundDeviceQuery)

  Dim SoundDeviceInfo As ManagementObject

  For Each SoundDeviceInfo In SoundDeviceSearch.Get()

  ListBox1.Items.Add("Sound Device Description: " & SoundDeviceInfo("Caption").ToString())

  ListBox1.Items.Add("Sound Device Status: " & SoundDeviceInfo("status").ToString())

  ListBox1.Items.Add("Sound Device Manufacturer: " & SoundDeviceInfo("Manufacturer").ToString())

  Next

  End Sub

  End Class



作者: 信息发布软件    时间: 2017-2-26 17:23
  1. 在项目开发过程中,经常会需要读取所在计算机的硬件信息,包括CPU的序列号,主板的序列号,硬盘的序列号,MAC地址,IP地址,用户名,系统类型,计算机名称,操作系统类型,物理内存大小,BIOS内容等。
  2. 开发环境:VS2005   .NET2.0
  3. 项目工程文件:Computer.zip  
  4. /*****************************************************************/
  5. /* 作者:虞晓杰
  6. * Emial:fishyxj@sina.com
  7. * 2011.9.26
  8. * 功能:用于获取计算机的各种信息,包括CPU的ID,MAC地址,硬盘ID,
  9. * IP地址登录用户名,计算机名称,系统类型,物理内存,主板的ID,
  10. * BIOS的ID
  11. *
  12. * 缺陷:当计算机存在虚拟网卡时,无法区分虚拟网卡与真实网卡,因此
  13. * 读取MAC地址时,会存在不稳定的情况。需要自行处理虚拟网卡MAC的情
  14. * 况
  15. /*****************************************************************/
  16. using System;
  17. using System.Collections.Generic;
  18. using System.Text;
  19. using System.Management;
  20. using System.Collections;
  21. using System.Net.NetworkInformation;
  22. using Microsoft.Win32;
  23. namespace XFish.Utils
  24. {
  25.     /// <summary>
  26.     /// 计算机信息类
  27.     /// </summary>
  28.     public class Computer
  29.     {
  30.         #region 类内部变量
  31.         private string _CpuID;
  32.         private string _MacAddress;
  33.         private ArrayList _MacAddList;
  34.         private string _DiskID;
  35.         private string _IpAddress;
  36.         private string _LoginUserName;
  37.         private string _ComputerName;
  38.         private string _SystemType;
  39.         private string _TotalPhysicalMemory; //单位:M   
  40.         private string _BaseboardID;
  41.         private string _BiosID;
  42.         private static Computer _instance;
  43.         #endregion
  44.         #region 类属性
  45.         /// <summary>
  46.         /// 获取计算机信息全局实例
  47.         /// </summary>
  48.         /// <returns>Computer实例</returns>
  49.         public static Computer Instance()
  50.         {
  51.             if (_instance == null)
  52.                 _instance = new Computer();
  53.             return _instance;
  54.         }
  55.         /// <summary>
  56.         /// 获取CPU的ID
  57.         /// </summary>
  58.         public string CpuID
  59.         {
  60.             get { return _CpuID; }
  61.         }
  62.         /// <summary>
  63.         /// 获取MAC地址
  64.         /// </summary>
  65.         public string MacAddress
  66.         {
  67.             get { return _MacAddress; }
  68.         }
  69.         /// <summary>
  70.         /// 获取计算机中的MAC地址列表,当存在多个网卡时(包括虚拟网卡)
  71.         /// </summary>
  72.         public ArrayList MacAddList
  73.         {
  74.             get { return _MacAddList; }
  75.         }
  76.         /// <summary>
  77.         /// 获取硬盘ID
  78.         /// </summary>
  79.         public string DiskID
  80.         {
  81.             get { return _DiskID; }
  82.         }
  83.         /// <summary>
  84.         /// 获取IP地址(活跃的网卡)
  85.         /// </summary>
  86.         public string IpAddress
  87.         {
  88.             get { return _IpAddress; }
  89.         }
  90.         /// <summary>
  91.         /// 系统登录用户名
  92.         /// </summary>
  93.         public string LoginUserName
  94.         {
  95.             get { return _LoginUserName; }
  96.         }
  97.         /// <summary>
  98.         /// 计算机名称
  99.         /// </summary>
  100.         public string ComputerName
  101.         {
  102.             get { return _ComputerName; }
  103.         }
  104.         /// <summary>
  105.         /// 操作系统类型
  106.         /// </summary>
  107.         public string SystemType
  108.         {
  109.             get { return _SystemType; }
  110.         }
  111.         /// <summary>
  112.         /// 总的物理内存
  113.         /// </summary>
  114.         public string TotalPhysicalMemory
  115.         {
  116.             get { return _TotalPhysicalMemory; }
  117.         }
  118.         /// <summary>
  119.         /// 主板ID
  120.         /// </summary>
  121.         public string BaseboardID
  122.         {
  123.             get { return _BaseboardID; }
  124.         }
  125.         /// <summary>
  126.         /// BIOS的ID
  127.         /// </summary>
  128.         public string BiosID
  129.         {
  130.             get { return _BiosID; }
  131.         }
  132.         #endregion
  133.         #region 类初始化
  134.         public Computer()
  135.         {
  136.             _CpuID = GetCpuID();
  137.             _MacAddress = GetMacAddress();
  138.             _MacAddList = GetMacAddList();
  139.             _DiskID = GetDiskID();
  140.             _IpAddress = GetIPAddress();
  141.             _LoginUserName = GetUserName();
  142.             _SystemType = GetSystemType();
  143.             _TotalPhysicalMemory = GetTotalPhysicalMemory();
  144.             _ComputerName = GetComputerName();
  145.             _BaseboardID = GetBaseBoardID();
  146.             _BiosID = GetBiosID();
  147.         }
  148.         #endregion
  149.         #region 类方法
  150.         /// <summary>
  151.         /// 获取BIOS序列号
  152.         /// </summary>
  153.         /// <returns></returns>
  154.         private string GetBiosID()
  155.         {
  156.            
  157.             try
  158.             {
  159.                 //方法一
  160.                 //SelectQuery Query = new SelectQuery("SELECT * FROM Win32_BaseBoard");
  161.                 //ManagementObjectSearcher driveID = new ManagementObjectSearcher(Query);
  162.                 //ManagementObjectCollection.ManagementObjectEnumerator data = driveID.Get().GetEnumerator();
  163.                 //data.MoveNext();
  164.                 //ManagementBaseObject board = data.Current;
  165.                 //return board.GetPropertyValue("SerialNumber").ToString();

  166.                 //方法二
  167.                 System.Management.ManagementObjectSearcher cmicWmi = new ManagementObjectSearcher("SELECT   *   FROM   Win32_BIOS");
  168.                 string biosid = string.Empty;
  169.                 ManagementObjectCollection moc = cmicWmi.Get();
  170.                 foreach (ManagementObject cmicWmiObj in moc)
  171.                 {
  172.                     biosid = cmicWmiObj["SerialNumber"].ToString();
  173.                 }
  174.                 return biosid;
  175.                 //System.Management.ManagementObjectSearcher cmicWmi = new ManagementObjectSearcher("SELECT   *   FROM   Win32_BIOS");
  176.                 //string biosid = string.Empty;
  177.                 //ManagementObjectCollection moc = cmicWmi.Get();
  178.                 //foreach (ManagementObject cmicWmiObj in moc)
  179.                 //{
  180.                 //    biosid += GetAllInfo(cmicWmiObj);
  181.                 //}
  182.                 //return biosid;
  183.             }
  184.             catch(Exception ex)
  185.             {
  186.                 //throw new Exception("unknow:"+ex.Message);
  187.                 return "unknow";
  188.             }
  189.             finally
  190.             {
  191.             }
  192.         }
  193.         /// <summary>
  194.         /// 获取CPU序列号
  195.         /// </summary>
  196.         /// <returns></returns>
  197.         private string GetCpuID()
  198.         {
  199.             try
  200.             {
  201.                 //获取CPU序列号代码   
  202.                 string cpuInfo = "";//cpu序列号   
  203.                 ManagementClass mc = new ManagementClass("Win32_Processor");
  204.                 ManagementObjectCollection moc = mc.GetInstances();
  205.                 foreach (ManagementObject mo in moc)
  206.                 {
  207.                     cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
  208.                 }
  209.                 moc = null;
  210.                 mc = null;
  211.                 return cpuInfo;
  212.                 //string cpuInfo = "";//cpu序列号   
  213.                 //ManagementClass mc = new ManagementClass("Win32_Processor");
  214.                 //ManagementObjectCollection moc = mc.GetInstances();
  215.                 //foreach (ManagementObject mo in moc)
  216.                 //{
  217.                 //    cpuInfo += GetAllInfo(mo);
  218.                 //}
  219.                 //moc = null;
  220.                 //mc = null;
  221.                 //return cpuInfo;
  222.             }
  223.             catch (Exception ex)
  224.             {
  225.                 return "unknow";
  226.             }
  227.             finally
  228.             {
  229.             }
  230.         }
  231.         /// <summary>
  232.         /// 获取MAC地址列表
  233.         /// </summary>
  234.         /// <returns></returns>
  235.         private ArrayList GetMacAddList()
  236.         {
  237.             try
  238.             {
  239.                 ArrayList maclist = new ArrayList();
  240.                 ArrayList warelessMacList = new ArrayList();
  241.                 NetworkInterface[] fNetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
  242.                 foreach (NetworkInterface adapter in fNetworkInterfaces)
  243.                 {
  244.                     string fRegistryKey = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\" + adapter.Id + "\\Connection";
  245.                     RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false);
  246.                     if (rk != null)
  247.                     {
  248.                         // 区分 PnpInstanceID   
  249.                         // 如果前面有 PCI 就是本机的真实网卡   
  250.                         // MediaSubType 为 01 则是常见网卡,02为无线网卡。   
  251.                         string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString();
  252.                         int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0));
  253.                         if (fPnpInstanceID.Length > 3 &&
  254.                         fPnpInstanceID.Substring(0, 3) == "PCI")
  255.                         {
  256.                             string mac = adapter.GetPhysicalAddress().ToString();
  257.                             mac = GetMacStr(mac);
  258.                             maclist.Add(mac);
  259.                         }
  260.                         else if (fMediaSubType == 1)
  261.                             continue;
  262.                         else if (fMediaSubType == 2)
  263.                         {
  264.                             string mac = adapter.GetPhysicalAddress().ToString();
  265.                             mac = GetMacStr(mac);
  266.                             warelessMacList.Add(mac);
  267.                         }
  268.                     }
  269.                 }
  270.                 maclist.AddRange(warelessMacList);
  271.                 return maclist;
  272.             }
  273.             catch
  274.             {
  275.                 try
  276.                 {
  277.                     ArrayList maclist = new ArrayList();
  278.                     ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
  279.                     ManagementObjectCollection moc = mc.GetInstances();
  280.                     foreach (ManagementObject mo in moc)
  281.                     {
  282.                         if (mo["MacAddress"] != null)
  283.                         {
  284.                             string mac = mo["MacAddress"].ToString();
  285.                             maclist.Add(mac);
  286.                         }
  287.                     }
  288.                     moc = null;
  289.                     mc = null;
  290.                     return maclist;
  291.                 }
  292.                 catch
  293.                 {
  294.                     return null;
  295.                 }
  296.             }
  297.         }
  298.         /// <summary>
  299.         /// 获取MAC地址
  300.         /// </summary>
  301.         /// <returns></returns>
  302.         private string GetMacAddress()
  303.         {
  304.             try
  305.             {
  306.                 string warelessMac = string.Empty;
  307.                 string mac = string.Empty;
  308.                 NetworkInterface[] fNetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
  309.                 foreach (NetworkInterface adapter in fNetworkInterfaces)
  310.                 {
  311.                     string fRegistryKey = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\" + adapter.Id + "\\Connection";
  312.                     RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false);
  313.                     if (rk != null)
  314.                     {
  315.                         // 区分 PnpInstanceID   
  316.                         // 如果前面有 PCI 就是本机的真实网卡   
  317.                         // MediaSubType 为 01 则是常见网卡,02为无线网卡。   
  318.                         string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString();
  319.                         int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0));
  320.                         if (fPnpInstanceID.Length > 3 &&
  321.                         fPnpInstanceID.Substring(0, 3) == "PCI")
  322.                         {
  323.                             mac = adapter.GetPhysicalAddress().ToString();
  324.                             break;
  325.                         }
  326.                         else if (fMediaSubType == 1)
  327.                             continue;
  328.                         else if (fMediaSubType == 2)
  329.                             warelessMac = adapter.GetPhysicalAddress().ToString();
  330.                     }
  331.                 }
  332.                 if (!mac.Equals(string.Empty))
  333.                     return GetMacStr(mac);
  334.                 else if (!warelessMac.Equals(string.Empty))
  335.                     return GetMacStr(warelessMac);
  336.                 else
  337.                     return "unknow";
  338.             }
  339.             catch (Exception ex)
  340.             {
  341.                 return "unknow";
  342.             }
  343.             finally
  344.             {
  345.             }
  346.         }
  347.         /// <summary>
  348.         /// 获取MAC地址
  349.         /// </summary>
  350.         /// <param name="mac"></param>
  351.         /// <returns></returns>
  352.         private string GetMacStr(string mac)
  353.         {
  354.             string newmac = string.Empty;
  355.             newmac = mac.Substring(0, 2);
  356.             mac = mac.Substring(2, mac.Length - 2);
  357.             while (!mac.Equals(string.Empty))
  358.             {
  359.                 newmac += ":";
  360.                 newmac += mac.Substring(0, 2);
  361.                 mac = mac.Substring(2, mac.Length - 2);
  362.             }
  363.             return newmac;
  364.         }
  365.         /// <summary>
  366.         /// 获取IP地址
  367.         /// </summary>
  368.         /// <returns></returns>
  369.         private string GetIPAddress()
  370.         {
  371.             try
  372.             {
  373.                 //获取IP地址   
  374.                 string st = "";
  375.                 ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
  376.                 ManagementObjectCollection moc = mc.GetInstances();
  377.                 foreach (ManagementObject mo in moc)
  378.                 {
  379.                     if ((bool)mo["IPEnabled"] == true)
  380.                     {
  381.                         //st=mo["IpAddress"].ToString();   
  382.                         System.Array ar;
  383.                         ar = (System.Array)(mo.Properties["IpAddress"].Value);
  384.                         st = ar.GetValue(0).ToString();
  385.                         break;
  386.                     }
  387.                 }
  388.                 moc = null;
  389.                 mc = null;
  390.                 return st;
  391.             }
  392.             catch (Exception ex)
  393.             {
  394.                 return "unknow";
  395.             }
  396.         }
  397.         /// <summary>
  398.         /// 获取硬盘的序列号
  399.         /// </summary>
  400.         /// <returns></returns>
  401.         private string GetDiskID()
  402.         {
  403.             try
  404.             {
  405.                 //方法一
  406.                 //ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
  407.                 //String strHardDiskID = null;
  408.                 //foreach (ManagementObject mo in searcher.Get())
  409.                 //{
  410.                 //    strHardDiskID = mo["SerialNumber"].ToString().Trim();
  411.                 //    break;
  412.                 //}
  413.                 //return strHardDiskID;
  414.                 //方法二
  415.                 //System.Management.ManagementObjectSearcher cmicWmi = new ManagementObjectSearcher("SELECT   *   FROM   Win32_DiskDrive");
  416.                 //string diskid = string.Empty;
  417.                 //foreach (ManagementObject cmicWmiObj in cmicWmi.Get())
  418.                 //{
  419.                 //    diskid = cmicWmiObj["signature"].ToString();
  420.                 //}
  421.                 //return diskid;
  422.                

  423.                 //方法三   
  424.                 //String HDid = "";
  425.                 //ManagementClass mc = new ManagementClass("Win32_DiskDrive");
  426.                 //ManagementObjectCollection moc = mc.GetInstances();
  427.                 //foreach (ManagementObject mo in moc)
  428.                 //{
  429.                 //    HDid = (string)mo.Properties["model"].Value;
  430.                 //}
  431.                 //moc = null;
  432.                 //mc = null;
  433.                 //return HDid;
  434.                 //方法四
  435.                 System.Management.ManagementObjectSearcher cmicWmi = new ManagementObjectSearcher("SELECT   *   FROM   Win32_DiskDrive");
  436.                 string tmp = string.Empty;
  437.                 foreach (ManagementObject cmicWmiObj in cmicWmi.Get())
  438.                 {
  439.                     bool isSyspan = false;
  440.                     System.Management.PropertyDataCollection pdc = cmicWmiObj.Properties;
  441.                     string info = string.Empty;
  442.                     foreach (PropertyData pd in pdc)
  443.                     {
  444.                         if (pd.Name.Equals("Name"))
  445.                         {
  446.                             if (pd.Value.Equals("\\\\.\\PHYSICALDRIVE0"))
  447.                             {
  448.                                 isSyspan = true;
  449.                             }
  450.                         }
  451.                         if (isSyspan)
  452.                         {
  453.                             if (pd.Name.Equals("PNPDeviceID"))
  454.                             {
  455.                                 tmp += pd.Value;
  456.                             }
  457.                             else if (pd.Name.Equals("Signature"))
  458.                             {
  459.                                 tmp += pd.Value;
  460.                                 break;
  461.                             }
  462.                         }
  463.                     }
  464.                 }
  465.                 return tmp;
  466.                
  467.             }
  468.             catch (Exception ex)
  469.             {
  470.                 return "unknow";
  471.             }
  472.             finally
  473.             {
  474.             }
  475.         }
  476.         /// <summary>   
  477.         /// 操作系统的登录用户名   
  478.         /// </summary>   
  479.         /// <returns></returns>   
  480.         private string GetUserName()
  481.         {
  482.             try
  483.             {
  484.                 string st = "";
  485.                 ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
  486.                 ManagementObjectCollection moc = mc.GetInstances();
  487.                 foreach (ManagementObject mo in moc)
  488.                 {
  489.                     st = mo["UserName"].ToString();
  490.                 }
  491.                 moc = null;
  492.                 mc = null;
  493.                 return st;
  494.             }
  495.             catch (Exception ex)
  496.             {
  497.                 return "unknow";
  498.             }
  499.             finally
  500.             {
  501.             }
  502.         }
  503.         /// <summary>   
  504.         /// 获取计算机操作系统类型  
  505.         /// </summary>   
  506.         /// <returns></returns>   
  507.         private string GetSystemType()
  508.         {
  509.             try
  510.             {
  511.                 string st = "";
  512.                 ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
  513.                 ManagementObjectCollection moc = mc.GetInstances();
  514.                 foreach (ManagementObject mo in moc)
  515.                 {
  516.                     st = mo["SystemType"].ToString();
  517.                 }
  518.                 moc = null;
  519.                 mc = null;
  520.                 return st;
  521.             }
  522.             catch (Exception ex)
  523.             {
  524.                 return "unknow";
  525.             }
  526.             finally
  527.             {
  528.             }
  529.         }
  530.         /// <summary>   
  531.         /// 获取计算机物理内存   
  532.         /// </summary>   
  533.         /// <returns></returns>   
  534.         private string GetTotalPhysicalMemory()
  535.         {
  536.             try
  537.             {
  538.                 string st = "";
  539.                 ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
  540.                 ManagementObjectCollection moc = mc.GetInstances();
  541.                 foreach (ManagementObject mo in moc)
  542.                 {
  543.                     st = mo["TotalPhysicalMemory"].ToString();
  544.                 }
  545.                 moc = null;
  546.                 mc = null;
  547.                 return st;
  548.             }
  549.             catch (Exception ex)
  550.             {
  551.                 return "unknow";
  552.             }
  553.             finally
  554.             {
  555.             }
  556.         }
  557.         /// <summary>
  558.         /// 获取主板的ID
  559.         /// </summary>
  560.         /// <returns></returns>
  561.         private string GetBaseBoardID()
  562.         {
  563.             try
  564.             {
  565.                 //string strbNumber = string.Empty;
  566.                 //ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_baseboard");
  567.                 //foreach (ManagementObject mo in mos.Get())
  568.                 //{
  569.                 //    strbNumber = mo["SerialNumber"].ToString();
  570.                 //    break;
  571.                 //}
  572.                 //return strbNumber;
  573.                 ManagementClass mc = new ManagementClass("WIN32_BaseBoard");
  574.                 ManagementObjectCollection moc = mc.GetInstances();
  575.                 string SerialNumber = "";
  576.                 foreach (ManagementObject mo in moc)
  577.                 {
  578.                     SerialNumber = mo["SerialNumber"].ToString();
  579.                     break;
  580.                 }
  581.                 return SerialNumber;
  582.                 //ManagementClass mc = new ManagementClass("WIN32_BaseBoard");
  583.                 //ManagementObjectCollection moc = mc.GetInstances();
  584.                 //string SerialNumber = "";
  585.                 //foreach (ManagementObject mo in moc)
  586.                 //{
  587.                 //    SerialNumber = GetAllInfo(mo);
  588.                 //}
  589.                 //return SerialNumber;
  590.             }
  591.             catch (Exception ex)
  592.             {
  593.                 return "unknow";
  594.             }
  595.             finally
  596.             {
  597.             }
  598.         }
  599.         /// <summary>
  600.         /// 获取计算机名称
  601.         /// </summary>
  602.         /// <returns></returns>
  603.         private string GetComputerName()
  604.         {
  605.             try
  606.             {
  607.                 return System.Environment.GetEnvironmentVariable("ComputerName");
  608.             }
  609.             catch(Exception ex)
  610.             {
  611.                 return "unknow";
  612.             }
  613.             finally
  614.             {
  615.             }
  616.         }
  617.         #endregion
  618.     }
  619. }
复制代码


作者: mmgg    时间: 2017-2-27 01:07
编辑文字和活动都得靠自己想!!小白如我,只能做出这个效果。慢慢的去摸索!!??
作者: niubttt    时间: 2017-2-27 07:11
建站,方便快捷,有专人指导,还是很不错的!
作者: wbd902    时间: 2017-2-28 00:20
推荐的店铺,客服超级nice,远程装修,全5分,棒棒滴!
作者: wangliuh11    时间: 2017-2-28 01:00
热情的,动作也很利索,要求改进的地方什么的,都会第一时间改好。满分了
作者: 枯干枯干    时间: 2017-3-1 10:43
。几天就做好了。很满意!
作者: niubt    时间: 2017-3-2 17:31
计的不错。
作者: zzjiuzi008    时间: 2017-3-2 22:44
意,做了好几个店铺了,服务真心的不错,客服真的很热情,装修以后就是你家了!
作者: cjagl520    时间: 2017-3-3 03:36
客服姐姐晨曦都值得表扬,加班加点很敬业修改了10几次,都依依解决。最后都非常满意,现在像这种有问题能随时改正
作者: a001hao    时间: 2017-3-5 00:02
家很给力,自己不是很懂卖家马上给处理咯。给力给力
作者: yirenzhuang    时间: 2017-3-14 09:56
,55号笨蛋,2号笨蛋服务态度都很好,有问题都给及时解决,
作者: loverun    时间: 2017-3-14 21:40
都满足不了我对店家的评价!!!非常满意模板真心的不错显示工整完美大方使用简单方便之前用的是淘宝基础版枯燥不堪用了这模板后看自己的铺面心情都不样呵呵!店家的服务也非常周到有问必答而且非常有耐心省时省事省心。
作者: huangge    时间: 2017-3-15 08:46
,方便实用,卖家很耐心回答问题,谢谢卖家
作者: 发财猪    时间: 2017-3-16 08:05
,服务热情,完美解决了问题,非常感谢~
作者: ziyang701    时间: 2017-3-16 08:43
业的,设计很好的,不错
作者: 429187535    时间: 2017-3-16 09:47
开发的网店很好,服务耐心细致,售前咨询我感觉很到位,售后的技术指导简单有效,对我这个一窍不通的初学者更是不厌其烦,完成速度令我满意,以后如果有需要还会再来的,很好,全5分。
作者: c19900420    时间: 2017-3-16 12:42
意,做了好几个店铺了,服务真心的不错,客服真的很热情,装修以后就是你家了!
作者: meilifc001    时间: 2017-3-16 17:57
的挺好的,操作起来简单,老板也很有耐心,满意
作者: 123    时间: 2017-3-17 11:06
我是个凑数的。。。
作者: xiaoyaoyao001    时间: 2017-3-17 13:43
的内容,太超值。
作者: wangliuh11    时间: 2017-3-18 13:58
错满意吧下次需要还会来
作者: 阿拉丁    时间: 2017-3-19 01:16
挺多,客服很耐心,有导师在线指导,我这个菜鸟也能开店了,哈哈!还没有货品上架,还需要更进一步帮助,请给力支持哦!5分好评!
作者: 西充    时间: 2017-3-20 22:37
!!我看了三天才看掉3g多的视频,慢慢看!
作者: 小痞子    时间: 2017-3-22 07:04
界面简单,容易上手!
作者: jingtai001    时间: 2017-3-22 22:59
还没看,不过超大容量,内容应该没差吧
作者: niubttt    时间: 2017-3-24 09:44
好人品,生意兴隆,都是5分
作者: lnzhanghao    时间: 2017-3-24 12:53
雷,雷雷雷,亲很好,买了好多模板,不痛苦我就换模板
作者: feiyang2006    时间: 2017-3-24 21:03
术不错。。。整的巴适。。。
作者: x201323    时间: 2017-3-25 01:55
好,专业的就是不一样,价格很便宜,大公司,给中评是因为对客服的无语
作者: 阿拉丁    时间: 2017-3-26 08:37
很好,很不错!
作者: znl001    时间: 2017-3-27 00:16
常好,帮了我很大的忙,希望今后老板的生意越来越好,老板加油




欢迎光临 信息发布软件,b2b软件,广告发布软件 (http://postbbs.com/) Powered by Discuz! X3.2