我正在开发一种工作工具,需要将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;
}
}
}
}
答案 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安全性
完全信任直接调用方。此成员不能使用 部分信任的代码。
因此,您必须在管理员或类似帐户下运行此代码段。