0

我在为连接到我的系统并宣传网络适配器的设备分配静态 IP 地址时遇到问题。每当我使用 IP 和子网掩码在设备上调用 EnableStatic 时,它都会返回错误代码 0x80041003,我认为这意味着“访问被拒绝”。我可以在 Windows 中更改 IP 地址而无需提升。

我用来设置 IP 地址的代码如下所示:

 /// <summary>
    /// Set's a new IP Address and subnet mask for the adapter with the given description.
    /// </summary>
    /// <param name="description">Description string used to ID the adapter.</param>
    /// <param name="ip_address">The IP Address.</param>
    /// <param name="subnet_mask">The Submask IP Address</param>
    public static void SetIP(string description, string ip, string mask)
    {
        ManagementClass findAdapters = 
                                    new ManagementClass("Win32_NetworkAdapterConfiguration");
        ManagementObjectCollection adapters = findAdapters.GetInstances();

        foreach (ManagementObject adapter in adapters)
        {
            string name = (string)adapter["Description"];

            if (name != description)
            {
                continue;
            }

            try
            {
                ManagementBaseObject newIP = 
                                           adapter.GetMethodParameters("EnableStatic");

                newIP["IPAddress"] = new string[] { ip };
                newIP["SubnetMask"] = new string[] { mask };

                ManagementBaseObject setIP = 
                                            adapter.InvokeMethod("EnableStatic", newIP, null);

                UInt32 result = (UInt32)(setIP["returnValue"]);
            }
            catch (Exception)
            {
                throw;
            }                
        }
    }

我在互联网上四处寻找解决方案。最有可能的是,我需要在一切启动并运行之前执行 CoInitializeSecurity 之类的操作。但这对我来说似乎很奇怪。我正在使用 WMI 命名空间,如果 WMI 在某种程度上依赖于这样的东西,那肯定也应该在命名空间中吗?

我在这里缺少一些东西....

顺便说一句,在域上以用户身份运行 Windows 7,但如果有帮助,我是本地管理员!

4

1 回答 1

1

您需要以管理员身份运行。

如果您想避免 UAC 提示,您可以执行类似的操作

制作并安装能够更改 IP 并以管理员身份运行的服务

根据需要告诉服务新 IP

于 2012-05-18T04:27:24.437 回答