c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存

c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存

我们在利用C#开发桌面程序(Winform)程序的时候,

经常需要获取一些跟系统相关的信息,

c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存。

首先需要引入命名空间:

using System.Management;
/// 操作系统的登录用户名:

string GetUserName()
{
    try
    {
        string st = "";
        ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
        ManagementObjectCollection moc = mc.GetInstances();
        foreach (ManagementObject mo in moc)
        {
  st = mo["UserName"].ToString();
        }
        moc = null;
        mc = null;
        return st;
    }
    catch
    {
        return "unknow";
    }
    finally
 {
 
    }
 }
//获取MAC地址:

string GetMacAddress()
{
    try
    {
        //获取网卡硬件地址
        string mac = "";
        ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
        ManagementObjectCollection moc = mc.GetInstances();
        foreach (ManagementObject mo in moc)
        {
            if ((bool)mo["IPEnabled"] == true)
            {
                mac = mo["MacAddress"].ToString();
                break;
            }
        }
        moc = null;
        mc = null;
        return mac;
    }
    catch
    {
        return "unknow";
    }
    finally
    {
 
    }
}
//获取IP地址:

/// <summary>
/// 获取客户端内网IP地址
/// </summary>
/// <returns></returns>
private static string getClientLocalIPAddress()
{
   string localIP=null;
   try
   {
      IPHostEntry ipHost = System.Net.Dns.GetHostEntry(Dns.GetHostName());// Dns.Resolve(Dns.GetHostName()); ;
      IPAddress ipaddress = ipHost.AddressList[0];
      localIP = ipaddress.ToString();
      return "内网IP地址:"+localIP;
   }
   catch
   {
       return "内网IP地址:unknown";
   }

 
/// <summary>
/// 获得客户端外网IP地址
/// </summary>
/// <returns>IP地址</returns>
public static string getClientInternetIPAddress()
{
  string internetAddress = "";
  try
  {
     using (WebClient webClient = new WebClient())
     {
       internetAddress = webClient.DownloadString("http://www.coridc.com/ip");//从外部网页获得IP地址
       //判断IP是否合法
       if (!System.Text.RegularExpressions.Regex.IsMatch(internetAddress, "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}"))
       {
         internetAddress = webClient.DownloadString("http://fw.qq.com/ipaddress");//从腾讯提供的API中获得IP地址
       }
     }
     return "外网IP地址:" + internetAddress;
  }
  catch
  {
     return "外网IP地址:unknown";
  }
}

//获取硬盘ID:
string GetDiskID()
{
    try
    {
        String HDid = "";
        ManagementClass mc = new ManagementClass("Win32_DiskDrive");
        ManagementObjectCollection moc = mc.GetInstances();
        foreach (ManagementObject mo in moc)
        {
            //HDid = (string)mo.Properties["Model"].ToString();
            HDid = (String)mo.Properties["Model"].Value.ToString();
        }
        moc = null;
        mc = null;
        return HDid;
    }
    catch
    {
        return "unknow";
    }
}

//获取CPUid:
string GetCpuID()
{
    try
    {
        //获取CPU序列号代码
        string cpuInfo = "";//cpu序列号
        ManagementClass mc = new ManagementClass("Win32_Processor");
        ManagementObjectCollection moc = mc.GetInstances();
        foreach (ManagementObject mo in moc)
        {
            cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
        }
        moc = null;
        mc = null;
        return cpuInfo;
    }
    catch
    {
        return "unknow";
    }
}

//系统名称:
string GetSystemType()
{
    try
    {
        string st = "";
        ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
        ManagementObjectCollection moc = mc.GetInstances();
        foreach (ManagementObject mo in moc)
        {
            st = mo["SystemType"].ToString();
        }
        moc = null;
        mc = null;
        return st;
    }
    catch
    {
        return "unknow";
    }
}

//获取系统名称
 private static string GetSystemName()
        {
            string buffer = string.Empty;
            ManagementObjectSearcher searcher;
            searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT PartComponent FROM Win32_SystemOperatingSystem");

            foreach (ManagementObject queryObj in searcher.Get())
            {
                buffer = queryObj["PartComponent"].ToString();
                //会返回"\\ZHANGYUNYONG-PC\root\cimv2:Win32_OperatingSystem=@"
            }
            searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT Caption FROM Win32_OperatingSystem");

            foreach (ManagementObject queryObj in searcher.Get())
            {
                buffer = queryObj["Caption"].ToString();
                //会返回"Microsoft Windows 7 旗舰版 "
            }
            return buffer;
        }

//获取物理内存
string GetTotalPhysicalMemory()
{
    try
    {
        string st = "";
        ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
        ManagementObjectCollection moc = mc.GetInstances();
        foreach (ManagementObject mo in moc)
        {
            st = mo["TotalPhysicalMemory"].ToString();
        }
        moc = null;
        mc = null;
        return st;
    }
    catch
    {
        return "unknow";
    }
}
//获取公用桌面路径
[DllImport("shfolder.dll", CharSet = CharSet.Auto)]
private static extern int SHGetFolderPath ( IntPtr hwndOwner, int nFolder, IntPtr hToken, int dwFlags, StringBuilder lpszPath );
private const int MAX_PATH = 260;
private const int CSIDL_COMMON_DESKTOPDIRECTORY = 0x0019;
public static string GetAllUsersDesktopFolderPath ( )
{
     StringBuilder sbPath = new StringBuilder(MAX_PATH);
     SHGetFolderPath(IntPtr.Zero, CSIDL_COMMON_DESKTOPDIRECTORY, IntPtr.Zero, 0, sbPath);
     return sbPath.ToString();
}

//获取系统公用路径信息
   private void Test()
        {
            RegistryKey folders;
            folders = OpenRegistryPath(Registry.LocalMachine, @"/software/microsoft/windows/currentversion/explorer/shell folders");
            // Windows用户桌面路径
            string desktopPath = folders.GetValue("Common Desktop").ToString();
            // Windows用户字体目录路径
            string fontsPath = folders.GetValue("Fonts").ToString();
            // Windows用户网络邻居路径
            string nethoodPath = folders.GetValue("Nethood").ToString();
            // Windows用户我的文档路径
            string personalPath = folders.GetValue("Personal").ToString();
            // Windows用户开始菜单程序路径
            string programsPath = folders.GetValue("Programs").ToString();
            // Windows用户存放用户最近访问文档快捷方式的目录路径
            string recentPath = folders.GetValue("Recent").ToString();
            // Windows用户发送到目录路径
            string sendtoPath = folders.GetValue("Sendto").ToString();
            // Windows用户开始菜单目录路径
            string startmenuPath = folders.GetValue("Startmenu").ToString();
            // Windows用户开始菜单启动项目录路径
            string startupPath = folders.GetValue("Startup").ToString();
            // Windows用户收藏夹目录路径
            string favoritesPath = folders.GetValue("Favorites").ToString();
            // Windows用户网页历史目录路径
            string historyPath = folders.GetValue("History").ToString();
            // Windows用户Cookies目录路径
            string cookiesPath = folders.GetValue("Cookies").ToString();
            // Windows用户Cache目录路径
            string cachePath = folders.GetValue("Cache").ToString();
            // Windows用户应用程式数据目录路径
            string appdataPath = folders.GetValue("Appdata").ToString();
            // Windows用户打印目录路径
            string printhoodPath = folders.GetValue("Printhood").ToString();
        }

        private RegistryKey OpenRegistryPath(RegistryKey root, string s)
        {
            s = s.Remove(0, 1) + @"/";
            while (s.IndexOf(@"/") != -1)
            {
                root = root.OpenSubKey(s.Substring(0, s.IndexOf(@"/")));
                s = s.Remove(0, s.IndexOf(@"/") + 1);
            }
            return root;
        }

posted @ 2016-01-28 10:54  有妖气  阅读(398)  评论(0编辑  收藏  举报