【问题标题】:Machine IP reset does nothing机器 IP 重置不执行任何操作
【发布时间】:2015-05-22 17:07:27
【问题描述】:

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


            }
        }
    }

【问题讨论】:

  • 1) setIP 结果返回什么? 2)您是否尝试在管理员权限下运行它?
  • 如何将 setIP 转换为可读结果?
  • 好的,所以以管理员身份运行就可以了,但我需要能够重置 IP,即使不是以管理员身份运行。有什么想法吗?

标签: c# .net


【解决方案1】:

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

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

由 OP 尝试,结果如下:

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

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

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

【讨论】:

  • 这给了我 2147749891 作为返回值。这对你来说意味着什么?
  • 正如 Yury 建议的那样,确保您拥有管理员权限并且 UAC 不会阻止您。快速搜索该错误导致.. WBEM_E_ACCESS_DENIED 2147749891 (0x80041003) 当前用户无权执行该操作
【解决方案2】:

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

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

所以你确实必须在 admin 或类似帐户下运行这个 sn-p。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 2020-07-11
    • 2020-07-30
    相关资源
    最近更新 更多