2012-02-09 19 views
4

私はC#でIPパラメータを変更する簡単なプログラムを作ろうとしています。それを実行するためにHow can you change Network settings (IP Address, DNS, WINS, Host Name) with code in C# 、そして私自身の方法で作られた: 私はこのコードを使用することは、Windows XPで正常に動作しますが、Windows 7(スターターまたはPro)上で動作していないC#のネットワーク設定を変更する

public void changerip(string adresse, string NIC) 
{ 
    ManagementObjectCollection objMOC = objMC.GetInstances(); 
    foreach (ManagementObject objMO in objMOC) 
    { 

     if (objMO["Caption"].Equals(NIC)) 
     { 
      try 
      { 
       if (adresse != "0") 
       { 
        ManagementBaseObject setIP; 
        ManagementBaseObject newIP = 
         objMC.GetMethodParameters("EnableStatic"); 

        newIP["IPAddress"] = new string[] { "192.168." + adresse + ".50" }; 
        newIP["SubnetMask"] = new string[] { "255.255.255.0" }; 
        setIP = objMO.InvokeMethod("EnableStatic", newIP, null); 

        ManagementBaseObject setGateway; 
        ManagementBaseObject newGateway = 
        objMO.GetMethodParameters("SetGateways"); 
        newGateway["DefaultIPGateway"] = new string[] { "192.168." + adresse + ".254" }; 
        newGateway["GatewayCostMetric"] = new int[] { 1 }; 
        setGateway = objMO.InvokeMethod("SetGateways", newGateway, null); 

        ManagementBaseObject newDNS = 
        objMO.GetMethodParameters("SetDNSServerSearchOrder"); 
        newDNS["DNSServerSearchOrder"] = "192.168.1.24,192.168.1.2".Split(','); 
        ManagementBaseObject setDNS = 
        objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null); 
       } 
       else 
       { 
        ManagementBaseObject newDNS = objMO.GetMethodParameters("SetDNSServerSearchOrder"); 
        newDNS["DNSServerSearchOrder"] = null; 
        ManagementBaseObject enableDHCP = objMO.InvokeMethod("EnableDHCP", null, null); 
        ManagementBaseObject setDNS = objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null); 
        //Save all Gateways into an array 
        string[] gateways = (string[])objMO["DefaultIPGateway"]; 

        ManagementBaseObject newIP = objMO.GetMethodParameters("EnableStatic"); 
        ManagementBaseObject newGate = objMO.GetMethodParameters("SetGateways"); 

        //Set last value of the array(always the Gateway recived by DHCP) as the default Gateway 
        newGate["DefaultIPGateway"] = new string[] { gateways[gateways.Length - 1] }; 
        newGate["GatewayCostMetric"] = new int[] { 1 }; 
       } 
      } 
      catch (Exception Ex) 
      { 
       MessageBox.Show(Ex.Message); 
      } 
     } 
    } 
} 

を。私は、OSからの例外やエラー/セキュリティメッセージの立ち上がりはありません。

誰かが何が起こったのか考えていますか?

答えて

4

私には資格証明の問題のようです。管理者権限でプログラムを実行する必要があります。 exeを右クリックして「管理者として実行」をクリックするだけで簡単に実行できます。

+0

これを試しても機能しません。また、私はそれが証明書の問題または何かのような結果になる可能性があると思うドメイン上で私のユーザー名でログオンしようとしました。 – Deathdigger

+0

実際にあなたは正しいです!コンピュータの管理者は「管理者として実行」と同じではありません...また、Visual Studio 2K10 Expressで作成したショートカットでは実行できません。新しいものを手動で作成する必要があります。あなたの助けをありがとう – Deathdigger

+0

http://stackoverflow.com/questions/2818179/how-do-i-force-my-net-application-to-run-as-administratorも参照してください – Rocky

関連する問題