机器IP重置不做任何事情

本文关键字:任何事 IP 机器 | 更新日期: 2023-09-27 17:50:23

我正在研究一个需要将PC IP地址重置为特定IP和子网掩码的工作工具。

我已经使用下面的代码来尝试更改IP(取自本页:如何使用c#代码更改网络设置(IP地址,DNS, WINS,主机名)。

问题是,这段代码什么也没做。我电脑本地连接的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;
                }

            }
        }
    }

机器IP重置不做任何事情

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

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

由OP尝试,结果如下:

返回值为2147749891。这对你有什么意义吗?

正如Yury建议的那样,确保您拥有管理员权限并且UAC不会阻止您。快速搜索该错误的结果是:

WBEM_E_ACCESS_DENIED 2147749891 (0x80041003)当前用户没有执行操作的权限

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

评论
。. NET Framework Security
对直接呼叫者完全信任。不能使用此成员部分可信代码。

所以你必须在admin或类似的帐户下运行这个代码片段