文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>关于几种设置IP方式的尝试

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

时间:2010-07-19  来源:wunan

  以前修改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。老实说我是第一次接触这玩意。我一个同事先前写过这玩意,但我向他要代码参考的时候他说忘了。。。  不过给了一个代码片段,然后一顿翻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那个画界面容易。。。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载