我在为连接到我的系统并宣传网络适配器的设备分配静态 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,但如果有帮助,我是本地管理员!