2017-06-04 24 views
0

私は、カスタムDHCPプロトコルを使用してIPを取得するコードを少し開発しています。コードは、マシンのNICの1つをそのIPに設定する必要があります。Windows 7でマシンIPを設定する

コードは以下のとおりです。

private void SetIp(IPAddress ipAddress, IPAddress subnetMask, IPAddress gatewayAddress) 
    { 
      try 
      { 
       ManagementBaseObject objNewIP = null; 
       ManagementBaseObject objSetIP = null; 
       ManagementBaseObject objNewGate = null; 


       objNewIP = networkInterface.GetMethodParameters("EnableStatic"); 
       objNewGate = networkInterface.GetMethodParameters("SetGateways"); 



       //Set DefaultGateway 
       objNewGate["DefaultIPGateway"] = new string[] { gatewayAddress.ToString() }; 
       objNewGate["GatewayCostMetric"] = new int[] { 1 }; 


       //Set IPAddress and Subnet Mask 
       objNewIP["IPAddress"] = new string[] { ipAddress.ToString() }; 
       objNewIP["SubnetMask"] = new string[] { subnetMask.ToString() }; 

       objSetIP = networkInterface.InvokeMethod("EnableStatic", objNewIP, null); 
       objSetIP = networkInterface.InvokeMethod("SetGateways", objNewGate, null); 



       Console.WriteLine(
        "Updated IPAddress, SubnetMask and Default Gateway!"); 



      } 
      catch (Exception ex) 
      { 
      } 

     // throw new System.NotImplementedException(); 
    } 

EnableStaticの呼び出しで、私は2147749891を取得し続けます。この投稿Machine IP reset does nothingは、私が行っているマシンで管理者特権が必要だと示唆しています。

マイクロソフトのページhttps://msdn.microsoft.com/en-us/library/aa390383(v=vs.85).aspxは、私がむしろ避けたいと思うcomコードを必要とする書き込みロックを取得する必要があることを示唆しています。

おそらくnetshを使用して、おそらく管理者特権を必要としない方法で、これを達成するより良い方法はありますか? EnableStaticを呼び出すときに、私は

おかげ

答えて

1

を設定すると、詳細がそれに設定するNICのMACアドレスを持っているすべては、私は同じエラーを得ました。

実行中のユーザーを管理者(管理者として実行)に昇格させると、問題は解決しました。管理者だけがNICパラメータを変更できます。

私は管理者アクセス権を持つユーザーが同じコード(おそらくUACの問題)を実行できない理由をまだ特定していません。調査は進行中です。マイクロソフトのページ(https://msdn.microsoft.com/en-us/library/aa390383(v=vs.85).aspx)については

、2147786788. ない21477 ある "ロック書く有効になっていません"。

関連する問題