关于几种设置IP方式的尝试

以前修改IP用的IPHelper这个软件,非常好用,但总有几个地方感觉不爽。最最最重要的就是往注册表添加了很多东西,这对我这个绿色软件爱好者来说就是个灾难,于是决定手工做个类似的东西方便自己。

在网上一顿猛查,总的来说有一下几种方式:
1。注册表+DhcpNotifyConfigChange。详细的文章见:http://www.vckbase.com/document/viewdoc/?id=851。这个是见的比较多的方式。由此也略微知道了iphelper这个库。缺点就是这个函数是不公开的,而且需要对相关的注册表项比较了解。而且改成自动获取没有函数提供。
2。AddIPAddress & DeleteIPAddress 。这2个也是iphelper提供的函数。缺点也这2个基本上就是成对出现的。。。直接由静态的改成dhcp方式的话比较郁闷。
3。netsh方式。这个也是最开始软件提到的方式。优点是比较简单强大,用ShellExecute就可以搞定。缺点是。。。。依赖一个外部的总有点那么不太爽。。。。顺便记录下dump的方式:

netsh>interface ip
netsh interface ip>dump
//执行脚本用
netsh exec aaa.sh

下面是一个配置的例子


# ----------------------------------
# 接口 IP 配置
# ----------------------------------
pushd interface ip


# "本地连接" 的接口 IP 配置

set address name="本地连接" source=static addr=192.168.4.189 mask=255.255.255.0
add address name="本地连接" addr=10.1.1.241 mask=255.255.255.0
set address name="本地连接" gateway=10.1.1.254 gwmetric=1
set dns name="本地连接" source=static addr=219.235.127.1 register=PRIMARY
add dns name="本地连接" addr=202.97.224.68 index=2
set wins name="本地连接" source=static addr=none

# "无线网络连接" 的接口 IP 配置

set address name="无线网络连接" source=dhcp
set dns name="无线网络连接" source=dhcp register=PRIMARY
set wins name="无线网络连接" source=dhcp


popd
# 接口 IP 配置结束


4。WMI。老实说我是第一次接触这玩意。我一个同事先前写过这玩意,但我向他要代码参考的时候他说忘了。。。 :cry: 不过给了一个代码片段,然后一顿翻msdn有点明白了。。。
主要是Win32_NetworkAdapterConfiguration 这个托管类,里面有些参数和方法。唯一的缺点就是。。。设置的那块网卡必须连通才行。。。这个也让我很郁闷。


//获取托管的
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
//获取属性,另一种写法是mo.GetPropertyValue("");
if ((bool)mo["IPEnabled"] == true)
{
string s =mo["Description"].ToString();

this.Adapters.Items.Add(s);
AdapterMap.Add(s, mo);

}


}
//这个是调用对应的方法
string[] ips = Ip.Text.Split(new char[] { ' ' });
string[] masks = Mask.Text.Split(new char[] { ' ' });
string[] gws = Gateway.Text.Split(new char[] { ' ' });
UInt32 r1 = (UInt32)mo.InvokeMethod("EnableStatic", new object[] { ips, masks });


由于没系统学过c#,都是照着java的葫芦画c#的瓢,呵呵

以上也是对自己翻了几天的资料的一点小小的总结。最后选择用c#胡乱写了一个。。。顺便又复习了下xml的操作和xpath。感觉c#还是挺方便的。。。至少比mfc那个画界面容易。。。
[img]http://dl.iteye.com/upload/attachment/279778/c0e884c8-dee2-39ab-973a-93b07eb3537c.png[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值