【问题标题】:C# Network Configuration Change not workingC# 网络配置更改不起作用
【发布时间】:2016-07-07 03:39:48
【问题描述】:
公共类 NetworkConfig { 公共枚举网络类型 { 静止的, 动态的 } public bool SetNetworkConfiguration(string adaptName, string cIPAddress, string cSubnetMask,string cGateway, string[] cDNS, NetworkType nType) { var mClass = new ManagementClass("Win32_NetworkAdapterConfiguration"); var nCol = mClass.GetInstances(); foreach(nCol 中的 ManagementObject mObject) { string searchAdapt = (string)mObject["Description"]; if (string.Compare(adaptName, searchAdapt, StringComparison.InvariantCultureIgnoreCase) == 0) { 尝试 { 如果(nType == NetworkType.Static) { //게이트웨이셋 ManagementBaseObject newConfig_Gateway = mObject.GetMethodParameters("SetGateways"); ManagementBaseObject setConfig_Gateway; newConfig_Gateway["DefaultIPGateway"] = new string[] { cGateway }; newConfig_Gateway["GatewayCostMetric"] = new int[] { 1 }; setConfig_Gateway = mObject.InvokeMethod("SetGateways", newConfig_Gateway, null); //아이피, 서브마스크 셋 ManagementBaseObject newConfig_IPAddress = mObject.GetMethodParameters("EnableStatic"); ManagementBaseObject setConfig_IPAddress; newConfig_IPAddress["IPAddress"] = 新字符串[] { cIPAddress }; newConfig_IPAddress["SubnetMask"] = new string[] { cSubnetMask }; setConfig_IPAddress = mObject.InvokeMethod("EnableStatic", newConfig_IPAddress, null); //DNS셋 ManagementBaseObject newConfig_DNS = mObject.GetMethodParameters("SetDNSServerSearchOrder"); ManagementBaseObject setConfig_DNS; newConfig_DNS["DNSServerSearchOrder"] = cDNS; setConfig_DNS = mObject.InvokeMethod("SetDNSServerSearchOrder", newConfig_DNS, null); } 否则如果(nType == NetworkType.Dynamic) { mObject.InvokeMethod("EnableDHCP", null); } 别的 { 返回假; } 返回真; } 抓住 { 返回假; } } } 返回假; } }

我试过了,但没有用。如何更改网络配置?

【问题讨论】:

  • 程序是否抛出异常?你调试过你的代码吗?
  • 致 Jeroen Heier / 我正在调试,没有抛出异常

标签: c# configuration system


【解决方案1】:

这里是正确的代码,你必须遍历mObject.Properties,别忘了“以管理员身份”启动它:

public bool SetNetworkConfiguration(string adaptName, string cIPAddress, string cSubnetMask, string cGateway, string[] cDNS, NetworkType nType)
{
  var mClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
  var nCol = mClass.GetInstances();

  foreach (ManagementObject mObject in nCol)
  {
    foreach (var property in mObject.Properties)
    {
      if (property.Name == "Description")
      {
        var searchAdapt = property.Value.ToString();
        if (string.Compare(adaptName, searchAdapt, StringComparison.InvariantCultureIgnoreCase) == 0)
        {
          try
          {
            if (nType == NetworkType.Static)
            {
              //게이트웨이 셋
              var newConfig_Gateway = mObject.GetMethodParameters("SetGateways");
              ManagementBaseObject setConfig_Gateway;
              newConfig_Gateway["DefaultIPGateway"] = new[] {cGateway};
              newConfig_Gateway["GatewayCostMetric"] = new[] {1};

              setConfig_Gateway = mObject.InvokeMethod("SetGateways", newConfig_Gateway, null);

              //아이피, 서브마스크 셋
              var newConfig_IPAddress = mObject.GetMethodParameters("EnableStatic");
              ManagementBaseObject setConfig_IPAddress;
              newConfig_IPAddress["IPAddress"] = new[] {cIPAddress};
              newConfig_IPAddress["SubnetMask"] = new[] {cSubnetMask};

              setConfig_IPAddress = mObject.InvokeMethod("EnableStatic", newConfig_IPAddress, null);

              //DNS셋
              var newConfig_DNS = mObject.GetMethodParameters("SetDNSServerSearchOrder");
              ManagementBaseObject setConfig_DNS;
              newConfig_DNS["DNSServerSearchOrder"] = cDNS;
              setConfig_DNS = mObject.InvokeMethod("SetDNSServerSearchOrder", newConfig_DNS, null);
            }
            else if (nType == NetworkType.Dynamic)
            {
              mObject.InvokeMethod("EnableDHCP", null);
            }
            else
            {
              return false;
            }

            return true;
          }
          catch
          {
            return false;
          }
        }
      }
    }
  }

  return false;
}

【讨论】:

  • 谢谢,但我解决了。原因是没有设置管理员权限。
猜你喜欢
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多