C#2010 System.net如何更改nic配置设置 [英] C# 2010 System.net how to change nic configuration settings

查看:76
本文介绍了C#2010 System.net如何更改nic配置设置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为Windows 7创建一个小型配置文件应用程序,以允许用户选择配置文件,然后将更新配置文件中所选的NIC并更改其IP,子网,网关等.

在System.Management上找到了很多示例,但是它们似乎在Win 7中不起作用,我希望使用System.Net找到一个清晰的示例.

如果这是一个常见问题,我深表歉意,但我错过了一个有帮助的帖子.感谢您提供任何指针

I am trying to create a small profile application for windows 7 to allow user to select a profile, which will then update the chosen NIC in the profile and change its IP, Subnet, Gateway, etc..

Found lots of examples on System.Management, but they don''t seem to work in Win 7 and I was hoping to find a clear example using System.Net.

I apologize if this is a frequent question and I missed a post that would help. Thanks for any pointers

推荐答案

枚举Nic First:
Enumerate Nic First:
/// <summary>/// Returns the list of Network Interfaces installed
/// </summary>
/// <returns>Array list of string</returns>
public static ArrayList GetNICNames()
{
	ArrayList nicNames = new ArrayList();

	ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
	ManagementObjectCollection moc = mc.GetInstances();

	foreach(ManagementObject mo in moc)
	{
		if((bool)mo["ipEnabled"])
		{
			nicNames.Add( mo["Caption"] );
		}
	}

	return nicNames;
}



设置DNS:



Set DNS:

public static void SetDNS(string nicName, string DnsSearchOrder)
        {
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();

            foreach (ManagementObject mo in moc)
            {
                // Make sure this is a IP enabled device. Not something like memory card or VM Ware
                if ((bool)mo["IPEnabled"])
                {
                    if (mo["Caption"].Equals(nicName))
                    {

                        ManagementBaseObject newDNS = mo.GetMethodParameters("SetDNSServerSearchOrder");

                        newDNS["DNSServerSearchOrder"] = DnsSearchOrder.Split(',');

                        ManagementBaseObject setDNS = mo.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);

                        break;
                    }
                }
            }



设置IP



Set IP

/// <summary>
/// Set IP for the specified network card name
/// </summary>
/// <param name="nicName">Caption of the network card</param>
/// <param name="IpAddresses">Comma delimited string containing one or more IP</param>
/// <param name="SubnetMask">Subnet mask</param>
/// <param name="Gateway">Gateway IP</param>
/// <param name="DnsSearchOrder">Comma delimited DNS IP</param>
public static void SetIP( string nicName, string IpAddresses, string SubnetMask, string Gateway, string DnsSearchOrder)
{
	ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
	ManagementObjectCollection moc = mc.GetInstances();

	foreach(ManagementObject mo in moc)
	{
		// Make sure this is a IP enabled device. Not something like memory card or VM Ware
		if( (bool)mo["IPEnabled"] )
		{
			if( mo["Caption"].Equals( nicName ) )
			{

				ManagementBaseObject newIP = mo.GetMethodParameters( "EnableStatic" );
				ManagementBaseObject newGate = mo.GetMethodParameters( "SetGateways" );
				ManagementBaseObject newDNS = mo.GetMethodParameters( "SetDNSServerSearchOrder" );
						
				newGate[ "DefaultIPGateway" ] = new string[] { Gateway };
				newGate[ "GatewayCostMetric" ] = new int[] { 1 };

				newIP[ "IPAddress" ] = IpAddresses.Split( ',' );
				newIP[ "SubnetMask" ] = new string[] { SubnetMask };

				newDNS[ "DNSServerSearchOrder" ] = DnsSearchOrder.Split(',');

				ManagementBaseObject setIP = mo.InvokeMethod( "EnableStatic", newIP, null);
				ManagementBaseObject setGateways = mo.InvokeMethod( "SetGateways", newGate, null);
				ManagementBaseObject setDNS = mo.InvokeMethod( "SetDNSServerSearchOrder", newDNS, null);

				break;
			}
		}
	}
}


这篇关于C#2010 System.net如何更改nic配置设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆