2013-05-25 67 views
0

我必須非常頻繁地更改IP地址才能玩局域網遊戲以及在家中使用互聯網。我正在C#中創建一個可以快速完成的應用程序。我製作了諸如適配器名稱,IP地址,子網,DNS服務器地址等字段。 我它運行在設定的IP按一下按鈕代碼如下:如何設置網絡適配器的IP地址?

string adapter = comboAdapterName.Text; 
string ip = comboIPAddress.Text; 
string subnet = comboSubnet.Text; 
string dns = comboDNS.Text; 

現在我想用這個方法處理從這些領域中獲取數據,並相應地追加字符串。

Process p = new Process(); 
ProcessStartInfo psi = new ProcessStartInfo("netsh", "interface ip set address \"Local Area Connection\" static 192.168.0.10 255.255.255.0 192.168.0.1 1"); 
p.StartInfo = psi; 
p.Start(); 

但我想這不是那麼容易。因爲我無法在不打擾格式的情況下編輯它。此外,我試圖創建一個使用多種+一整新的字符串,我可以把這樣的:

ProcessStartInfo psi = new ProcessStartInfo(mystring); 

但它畢竟是對我來說太難了。請建議一個簡單的方法來做到這一點。

============================================== ============================

我想我明白了:

string ipstring = "netsh interface ip set address " + "\"" + adapter + "\"" + " " + "static" + " " + ip + " " + subnet + " " + dns; 

回答

0

您將需要使用String.Format方法。

例子:

string subnet = comboSubnet.Text; 

string formatted = string.Format("Subnet is: {0}", subnet); 

MessageBox.Show(formatted); 

格式化該字符串看起來像任何你想要的。

+0

以什麼方式?海報正在要求對字符串進行協調,並說這對他「太難了」。他不能從他已有的部分建立他的絃樂。 String.Format是從你已有的部分建立一個字符串的方法。 – nvoigt

+0

其實我無法添加「在我的字符串中,多麼愚蠢,謝謝你的時間。 –

0

你可以用下面的函數當前適配器配置:

private static void EthernetInf(out string ip, out string dns, out string nic) // To get current ethernet config 
{ 
    ip = ""; 
    dns = ""; 
    nic = ""; 
    foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
     if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet) 
     { 

      foreach (IPAddress dnsAdress in ni.GetIPProperties().DnsAddresses) 
      { 
       if (dnsAdress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) 
       { 
        dns = dnsAdress.ToString(); 
       } 
      } 



      foreach (UnicastIPAddressInformation ips in ni.GetIPProperties().UnicastAddresses) 
      { 
       if (ips.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork && !ips.Address.ToString().StartsWith("169")) //to exclude automatic ips 
       { 
        ip = ips.Address.ToString(); 
        nic = ni.Name; 
       } 
      } 
     } 
    } 

下面的函數是用來設置IP在提升的命令提示符:

private void SetIP(Button sender, string arg) //To set IP with elevated cmd prompt 
{ 
    try 
    { 
     if (sender.Background == Brushes.Cyan) 
     { 
      MessageBox.Show("Already Selected..."); 
      return; 
     } 
     ProcessStartInfo psi = new ProcessStartInfo("cmd.exe"); 
     psi.UseShellExecute = true; 
     psi.WindowStyle = ProcessWindowStyle.Hidden; 
     psi.Verb = "runas"; 
     psi.Arguments = arg; 
     Process.Start(psi); 
     if (sender == EthStatic || sender == EthDHCP) 
     { 
      EthStatic.ClearValue(Button.BackgroundProperty); 
      EthDHCP.ClearValue(Button.BackgroundProperty); 

      sender.Background = Brushes.Cyan; 
     } 

     if (sender == WIFIStatic || sender == WIFIDhcp) 
     { 
      WIFIStatic.ClearValue(Button.BackgroundProperty); 
      WIFIDhcp.ClearValue(Button.BackgroundProperty); 

      sender.Background = Brushes.Cyan; 
     } 

    } 
    catch(Exception ex) 
    { 
     MessageBox.Show(ex.Message); 

    } 

此點擊按鈕的代碼傳遞參數processstartinfo設置IP

private void EthStatic_Click(object sender, RoutedEventArgs e) 
{ 

    SetIP(EthStatic, "/c netsh interface ip set address \"" + EthName + "\" static " + Properties.Settings.Default.EthIPac + " " + Properties.Settings.Default.Subnet + " " + Properties.Settings.Default.EthDnsac + " & netsh interface ip set dns \"" + EthName + "\" static " + Properties.Settings.Default.EthDnsac); 


} 

完整的應用程序可在:

https://github.com/kamran7679/ConfigureIP

相關問題