我无法为连接到系统的设备分配静态IP地址并通告网络适配器。每当我在设备上调用EnableStatic时,使用IP和子网掩码,它将返回错误代码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以某种方式依赖于这样的东西,肯定也应该在命名空间中?
我在这里缺少一些东西......
btw在域上以用户身份运行Windows 7,但如果有帮助则是本地管理员!
答案 0 :(得分:1)
您需要以管理员身份运行。
如果您想避免UAC提示,可以执行类似
的操作make&amp;安装一项能够更改IP&amp;以管理员身份运行
根据需要告知服务新IP