62,025
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32;
using System.Management;
using System.Diagnostics;
namespace Galsun.HH.FCX.Content
{
/// <summary>
/// 获取硬件信息
/// </summary>
public class Hard
{
private static volatile Hard instance = null;
private static object lockHelper = new object();
private string _HardID = string.Empty;
/// <summary>
/// 构造函数
/// </summary>
private Hard()
{
_HardID = GetHardInfo();
}
/// <summary>
/// 获取硬件信息
/// </summary>
public string HardID
{
get
{
return _HardID;
}
}
/// <summary>
/// 单体模式返回当前类的实例
/// </summary>
/// <returns></returns>
public static Hard GetCacheService()
{
if (instance == null)
{
lock (lockHelper)
{
if (instance == null)
{
instance = new Hard();
}
}
}
return instance;
}
/// <summary>
/// 获取硬盘ID
/// </summary>
/// <returns>硬盘ID</returns>
private string GetHardInfo()
{
string HDInfo = "";
ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");
ManagementClass cimobject2 = new ManagementClass("Win32_Processor");
try
{
ManagementObjectCollection moc1 = cimobject1.GetInstances();
foreach (ManagementObject mo in moc1)
{
HDInfo += (string)mo.Properties["Model"].Value;
break;
}
ManagementObjectCollection moc2 = cimobject2.GetInstances();
foreach (ManagementObject mo in moc2)
{
HDInfo += (string)mo.Properties["Processorid"].Value;
break;
}
}
catch (Exception err)
{
HDInfo = err.ToString();
}
return HDInfo;
}
private string RunCmd(string command)
{
//实例一个Process类,启动一个独立进程
Process p = new Process();
//Process类有一个StartInfo属性
//设定程序名
p.StartInfo.FileName = "cmd.exe";
//设定程式执行参数
p.StartInfo.Arguments = "/c " + command;
//关闭Shell的使用
p.StartInfo.UseShellExecute = false;
//重定向标准输入
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
//重定向错误输出
p.StartInfo.RedirectStandardError = true;
//设置不显示窗口
p.StartInfo.CreateNoWindow = true;
//启动
p.Start();
//也可以用这种方式输入要执行的命令
//不过要记得加上Exit要不然下一行程式执行的时候会当机
//p.StandardInput.WriteLine(command);
//p.StandardInput.WriteLine("exit");
//从输出流取得命令执行结果
return p.StandardOutput.ReadToEnd();
}
}
}
Hard hard = Hard.GetCacheService();
GetHardID();