2015-05-22 65 views
0

我正在研究一个需要将PC IP地址重置为特定IP和子网掩码的工作工具。机器IP复位什么也不做

我使用下面的代码来尝试更改IP(取自此页:How can you change Network settings (IP Address, DNS, WINS, Host Name) with code in C#)。

问题是,这段代码什么也没做。我的电脑本地连接的IP地址不变 - 它仍然通过DHCP自动设置。

帮助?

public void SetIP(string ip_address, string subnet_mask) 
    { 

     ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
     ManagementObjectCollection objMOC = objMC.GetInstances(); 

     foreach (ManagementObject objMO in objMOC) 
     { 
      if ((bool)objMO["IPEnabled"]) 
      { 
       try 
       { 
        ManagementBaseObject setIP; 
        ManagementBaseObject newIP = 
         objMO.GetMethodParameters("EnableStatic"); 

        newIP["IPAddress"] = new string[] { ip_address }; 
        newIP["SubnetMask"] = new string[] { subnet_mask }; 

        setIP = objMO.InvokeMethod("EnableStatic", newIP, null); 
       } 
       catch (Exception) 
       { 
        throw; 
       } 


      } 
     } 
    } 
+0

1)作为setIP结果返回什么? 2)你有没有尝试在管理员权限下运行它? –

+0

如何将setIP变成可读结果? – steelfeathers

+0

好吧,以管理员身份运行使其工作,但我需要能够重置IP即使不作为管理员运行。有任何想法吗? – steelfeathers

回答

1

如果你尝试了,你应该得到失败的原因:

MessageBox.Show("ReturnValue : " + setIP["ReturnValue"].ToString()); 

由OP试过,有这样的结果:

这给了我2147749891作为返回值。这对你来说意味着什么?

由于Yury建议请确保您拥有管理员权限并且UAC不会阻止您。快速搜索这个错误的结果有:

WBEM_E_ACCESS_DENIED 2147749891(0x80041003)当前用户不必

+0

这给我2147749891作为返回值。这对你来说意味着什么? – steelfeathers

+1

Yury建议确保您拥有管理员权限,并且UAC不会阻止您。对该错误的快速搜索导致... WBEM_E_ACCESS_DENIED 2147749891(0x80041003)当前用户没有执行操作的权限 – Drew

0

所以执行操作的权限,因为我们想通了,到目前为止,主要的原因是缺乏的特权。作为MSDN说,大约ManagementObject.InvokeMethod(),您需要在完全受信任的执行范围: https://msdn.microsoft.com/en-us/library/ssk42c11(v=vs.110).aspx

备注对直接调用方
.NET Framework安全
的完全信任。 部分受信任的代码不能使用此成员。

所以,你确实需要在管理员帐户或类似帐户下运行此代码段。