网络编程获取计算机信息(DNS、WMI、Environment)

摘要:
在.net中,提供了DNS、WMI和Envrement等方法来获取本地或远程计算机信息。通过NetBIOS获取本地计算机名以使用System命名空间中的Environment类。

计算机名称和IP 地址对于运行TCP/IP 协议的网络主机来说,是两个最重要的标识。IP地址由4个十进制的数字号码所组成,而每一个号码的值介于0~255之间,它虽然解决了网络上计算机的识别问题,但是IP地址不容易记,因此域名系统(DNS)被开发出来,它专门用于将IP地址转换成有意义的文字,以方便识别记忆。

在.net中,提供了DNS、WMI、Envrioment等方法来获取本地或远程计算机的信息。

1、Envrioment类

此类提供有关当前环境和平台的信息以及操作它们的方法。

NetBIOS 是一种非常古老的网络协议,它是为了和IBM NetBIOS 兼容而引进的。NetBIOS 是建立在BIOS 基础之上,并对之进行了扩展,使之能够支持网络上的I/O 调用。

通过NetBIOS 来获取本地计算机名称要使用到System 命名空间中的Environment 类。通过NetBIOS 获取本地计算机名称使用的是Environment 类的MachineName 属性。Environment类还提供了一些的属性用以获取和计算机相关的其他重要信息。

2、DNS类

Dns类主要是从域名系统(DNS)中检索关于特定主机的信息,提供简单的域名解析功能。位于System.Net命名空间下。

3、WMI规范

WMI对应的命名空间提供对大量管理信息和管理事件集合的访问,这些信息和事件是与根据 Windows 管理规范 (WMI) 结构对系统、设备和应用程序设置检测点有关的。应用程序和服务可以可以查询感兴趣的管理信息(例如在磁盘上还剩多少可用空间、当前 CPU 利用率是多少、某一应用程序正连接到哪一数据库等等)。

msdn:http://msdn.microsoft.com/zh-cn/library/system.management.aspx

1、本地计算机和主机名

在C#提供的Dns类,可以轻松的取得主机名和IP地址.
示例:
string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP
string strAddr = ipEntry.AddressList[0].ToString(); //第一个网卡地址

MAC地址:使用ManagementClass。

2、远程计算机和主机名

获取远程主机的MAC地址时,需要借用API函数SendARP.该函数使用ARP协议,向目的主机发送ARP包,利用返回并存储在高速缓存中的IP和MAC地址对,从而获取远程主机的MAC地址.
参考:http://hi.baidu.com/ooofcu/blog/item/6b7fba99f4f40a0f6f068c3c.html

3、WMI的部分应用

如:

网络编程获取计算机信息(DNS、WMI、Environment)第1张网络编程获取计算机信息(DNS、WMI、Environment)第2张Code
 /// <summary>
        
/// CPUID
        
/// </summary>
        
/// <returns></returns>
        private string GetCPU()
        {
            
string str = null;
            ManagementClass cimobject 
= new ManagementClass("Win32_Processor");
            ManagementObjectCollection moc 
= cimobject.GetInstances();
            
foreach (ManagementObject mo in moc)
            {
                cpuInfo 
= mo.Properties["ProcessorId"].Value.ToString();
            }
            
return str;
        }
        
/// <summary>
        
/// HardDiskID
        
/// </summary>
        
/// <returns></returns>
        private string GetHardDisk()
        {
             string str=null;
            ManagementClass cimobject = new ManagementClass("Win32_PhysicalMedia");
            ManagementObjectCollection moc = cimobject.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                str = mo.Properties["SerialNumber"].Value.ToString();
            }
            return str;
    

    }
        
/// <summary>
        
/// NetWorkCard Mac
        
/// </summary>
        
/// <returns></returns>
        private string GetNetWorkCard()
        {
            
string str = null;
            ManagementClass mc 
= new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc 
= mc.GetInstances();
            
foreach (ManagementObject mo in moc)
            {
                
if ((bool)mo["IPEnabled"== true)
                    str 
= mo["MacAddress"].ToString();
                mo.Dispose();
            } 
            
return str;
        }

其他:

http://msdn.microsoft.com/en-us/library/aa394084(VS.85).aspx

http://www.opent.cn/?action=show&id=323

http://school.cfan.com.cn/pro/c/2006-08-08/1154967075d11871.shtml

http://blog.csdn.net/ssm1226/archive/2005/01/19/259887.aspx

 

免责声明:文章转载自《网络编程获取计算机信息(DNS、WMI、Environment)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker-Bridge Network 03 自定义网络iOS开发之JSON转PLIST(把存储json格式的文件转换成plist文件)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

域名如何添加解析?

A记录 地址记录,用来指定域名的IPv4地址(如:8.8.8.8),如果需要将域名指向一个IP地址,就需要添加A记录。 记录类型:A 主机记录:主机记录就是域名前缀,常见用法有: www:解析后的域名为 ,例如www.baidu.com。 @:直接解析主域名,例如baidu.com。 *:泛解析,匹配其他所有域名,例如 *.baidu.com” 解析线...

windows之电脑开机出现 this product is covered by one or more of the following prtents

电脑开机出现 this product is covered by one or more of the following prtents有次意外断电后就每次都出现这个提示,然后要等检查完才能进入系统,按ESC可以跳过。这个到底是什么意思啊。 解决办法: 这是由于网卡启用了BOOT ROM芯片的引导功能。可以在bios里面修改配置:开机按Del键,进...

SecureCRT访问开发板linux系统

前言: 最近在用OK6410开发板跑linux系统,经常在终端上敲一些指令,无奈开发板屏幕太小用起来非常不方便,所以使用终端一款能运行在windows上的软件与开发板连接,直接在电脑上操作开发板了,这款软件是SecureCRT。 1、软件的简单配置: 安装SecureCRT软件,然后打开文件--快速连接 接着选择一种与开发板连接的协议并进行参数配置...

联想笔记本电脑Ubuntu系统下触摸板的锁定

联想笔记本电脑Ubuntu系统下触摸板的锁定    由于我的电脑是联想的笔记本,其它的电脑及系统没有测试。    正式开始使用Linux啦~    我只试过下面这一种方法。    在终端下执行下面一个命令即可(Ctrl+Alt+T):        锁定:sudo rmmod psmouse        解锁:sudo modprobe psmouse ...

Windows 服务器初始化基本安全设置

# 权限设置 每个分区除 系统盘,仅保留(system和administrators权限) # 计算机配置 - Windows设置 - 安全设置 - 帐户策略 - 密码策略:”密码最长使用期限”,设置为”0”(无期限)。 # 新建一个用户。也可以使用Administrator(内置管理员),但要启用批准模式,组策略,计算机配置 - Windows设置...

使用WMI控制Windows进程 和服务

1.使用WMI控制Windows进程 本文主要介绍两种WMI的进行操作:检查进程是否存在、创建新进行 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Management; using System.Threa...