如何编程实现修改IP地址、子网掩码、网关、DNS地址等?

huxin1012 2003-03-25 06:12:24
如题。
...全文
208 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SmallCase 2003-03-27
  • 打赏
  • 举报
回复
好厉害
TheAres 2003-03-27
  • 打赏
  • 举报
回复
用WMI不要重新启动。具体参考下面的完整代码。

using System;
using System.Management;
using System.Threading;

namespace WmiIpChanger
{
class IpChanger
{
[MTAThread]
static void Main(string[] args)
{
ReportIP();
// SwitchToDHCP();
SwitchToStatic();
Thread.Sleep( 5000 );
ReportIP();
Console.WriteLine( "end." );
}

static void SwitchToDHCP()
{
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach( ManagementObject mo in moc )
{
if( ! (bool) mo["IPEnabled"] )
continue;

inPar = mo.GetMethodParameters("EnableDHCP");
outPar = mo.InvokeMethod( "EnableDHCP", inPar, null );
break;
}
}

static void SwitchToStatic()
{
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach( ManagementObject mo in moc )
{
if( ! (bool) mo[ "IPEnabled" ] )
continue;

inPar = mo.GetMethodParameters( "EnableStatic" );
inPar["IPAddress"] = new string[] { "192.168.1.1" };
inPar["SubnetMask"] = new string[] { "255.255.255.0" };
outPar = mo.InvokeMethod( "EnableStatic", inPar, null );
break;
}
}

static void ReportIP()
{
Console.WriteLine( "****** Current IP addresses:" );
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach( ManagementObject mo in moc )
{
if( ! (bool) mo[ "IPEnabled" ] )
continue;

Console.WriteLine( "{0}\n SVC: '{1}' MAC: [{2}]", (string) mo["Caption"],
(string) mo["ServiceName"], (string) mo["MACAddress"] );

string[] addresses = (string[]) mo[ "IPAddress" ];
string[] subnets = (string[]) mo[ "IPSubnet" ];

Console.WriteLine( " Addresses :" );
foreach(string sad in addresses)
Console.WriteLine( "\t'{0}'", sad );

Console.WriteLine( " Subnets :" );
foreach(string sub in subnets )
Console.WriteLine( "\t'{0}'", sub );
}
}
}
}
jackyhzzjcn 2003-03-26
  • 打赏
  • 举报
回复
c:\netsh /?回车
engine_ 2003-03-26
  • 打赏
  • 举报
回复
up
SaSBYa 2003-03-26
  • 打赏
  • 举报
回复
gz
TheAres 2003-03-26
  • 打赏
  • 举报
回复
都在注册表里。

去HKEY_LOCAL_MACHINE
找子键SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\"netcard# "

一般是netcard# 是1,你也可以改其它网卡的。
取ServiceName的值。


HKEY_LOCAL_MACHINE÷SYSTEM\CurrentControlSet\Services\"ServiceName(上面取到的值)"\Parameters\TcpIp
看看就知道了,全部在这里。

huxin1012 2003-03-26
  • 打赏
  • 举报
回复
关于netsh,能详细介绍一下吗?我不太清楚。
谢谢!
lxwde 2003-03-26
  • 打赏
  • 举报
回复
这个不用重起的,好像本地连接属性也应该是调这个的。
lxwde 2003-03-26
  • 打赏
  • 举报
回复
老大,我前段时间做过一个,在msdn里找的文章用的是netsh,微软没把这个做成api,你可以直接运行netsh.exe式一下。我当时用createprocess调netsh,传不同的参数来做的,立杆见影。如果是98可能不行,2000都带netsh。
贝贝壳壳 2003-03-26
  • 打赏
  • 举报
回复
自己修改的好象需要重启
而通过本地连接属性修改的则不需要
有什么办法吗
huxin1012 2003-03-26
  • 打赏
  • 举报
回复
我找到了。但是修改后,并没有发挥作用。
如:我将ip地址由192.168.38.25改为192.168.38.24
但并没有发挥作用。用IPCONFIG看仍是192.168.38.25

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧