机器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;
}
}
}
}
如果您尝试这样做,您应该获得失败的原因:
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或类似的帐户下运行这个代码片段