(急)将 COM 对象与其基础 RCW 分开后不能再使用该对象
我想实现通过WMI来修改计算机的IP配置,在我自己的机器上都可以调试成功,但是换到另一台机器(有.Net Framework 1.1 没有VS.Net2003)后,就提示 "将 COM 对象与其基础 RCW 分开后不能再使用该对象 ",听人说是因为离开了vs.net环境的原因,请哪位高手帮我看看该如何改才能让程序正常啊
我发现问题就出在foreach()语句中,不会弄了,帮我改下吧
try
{
ConnectionOptions Conn =new ConnectionOptions();
ManagementScope Ms = new ManagementScope ( "\\\\127.0.0.1\\root\\cimv2 " , Conn )
ManagementObjectSearcher query = new ManagementObjectSearcher( "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE ' ") ;
ManagementObjectCollection queryCollection = query.Get();
ManagementBaseObject iObj = null;
ManagementBaseObject oObj = null;
string[] strDefaultGateway = new string[]{this.DefaultGateway};
string[] strIPAddress = new string[]{this.IPaddress};
string[] strSubnetMask = new string[]{this.SubnetMask};
string[] strFirstDNS = new string[]{this.FirstDNS,this.SecondDNS};
if (queryCollection.Count <=0)
{
label3.Text+= "没找到本机上的网卡,无法进行IP配置!\n ";
return;
}
foreach( ManagementObject MO in queryCollection )
{
iObj = MO.GetMethodParameters( "EnableStatic " );
iObj[ "IPAddress "] = strIPAddress;
iObj[ "SubnetMask "] = strSubnetMask;
oObj = MO.InvokeMethod( "EnableStatic ", iObj, null);
iObj = MO.GetMethodParameters( "SetGateways " );
iObj[ "DefaultIPGateway "] = strDefaultGateway;
oObj = MO.InvokeMethod( "SetGateways ", iObj, null);
iObj = MO.GetMethodParameters( "SetDNSServerSearchOrder ");
iObj[ "DNSServerSearchOrder "] = strFirstDNS;
oObj = MO.InvokeMethod( "SetDNSServerSearchOrder ", iObj, null);
}
//效验修改
string strResultIP= " ";
System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
for (int i = 0; i < addressList.Length; i ++)
{
strResultIP += addressList[i].ToString();
}
if(strResultIP==this.IPaddr