机器IP重置不起作用

时间:2015-05-22 17:07:27

标签: c# .net

我正在开发一种工作工具,需要将PC 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;
                }


            }
        }
    }

2 个答案:

答案 0 :(得分:1)

如果您尝试这样做,您应该获得失败的原因:

.select2-container .select2-selection--single {height: 50px !important;}

由OP尝试,结果如下:

  

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

Yury建议确保您拥有管理员权限,而UAC并没有阻止您。快速搜索该错误的原因是:

  

WBEM_E_ACCESS_DENIED 2147749891(0x80041003)当前用户无权执行操作

答案 1 :(得分:0)

因此,正如我们到目前为止所知,主要原因是缺乏特权。正如MSDN所说的ManagementObject.InvokeMethod(),您需要处于完全受信任的执行范围: https://msdn.microsoft.com/en-us/library/ssk42c11(v=vs.110).aspx

  

<强>说明
   .NET Framework安全性
  完全信任直接调用方。此成员不能使用   部分信任的代码。

因此,您必须在管理员或类似帐户下运行此代码段。