title: Setting Static IP Address VB.net
body: <p>I am writing a script for setting static ip to computers. it reads a file that has mac addr - ip addr pair. based on the computers mac address it gets its ip address from the file. I have problem setting this up. I have never done any kind of .net programming. I wrote a bashscript for linux side which works, but for windows I don't have any experience. I wrote the program in vb.net. Until now the program can get the data from the file, now I have to set static ip based on the mac address and also hostname. there were several different posts <a href="https://stackoverflow.com/questions/25125275/setting-a-specific-nic-with-static-ip-address-in-c-sharp">1</a>, <a href="http://www.codeproject.com/Articles/6975/SwitchNetConfig-Laptop-users-quickly-switch-networ" rel="nofollow noreferrer">2</a>, but they were all in c# ,and have problem converting them to VB.Net. It would be great if someone could provide a pointer on how to Set Static IP address for a specific NIC on local computer. </p>
  
  <pre><code>Imports System
  Imports System.Text.RegularExpressions
  Imports System.Net.NetworkInformation
  Imports System.IO
  Imports System.Management
  
  
  Module Module1
  
  Const FAILURE = 1
  Const SUCCESS = 0
  Dim phyAddr As String = getMAC()
  
  
  Sub Main()
  
      Dim arguments(3) As String
      Dim fileName As String = ""
  
  
      If Environment.GetCommandLineArgs.Count = 3 Then
  
          arguments = Environment.GetCommandLineArgs
          fileName = arguments(2)
  
      Else
  
          Console.WriteLine("Wrong Syntax!")
          help()
          Console.Read()
          close(FAILURE)
  
      End If
  
      If validName(fileName) Then
  
          If fileExists(fileName) Then
  
              'search file for ip 
              Dim confData As String = searchFile(phyAddr, fileName)
  
              If Not String.IsNullOrEmpty(confData) Then
  
                  Dim netConf() As String = splitLine(confData)
  
                  Dim hostName As String = netConf(1)
                  Dim ipAddr As String = netConf(2)
                  Dim netMask As String = netConf(3)
                  Dim gateway As String = netConf(4)
                  Dim dns1 As String = netConf(5)
                  Dim dns2 As String = netConf(6)
  
  
  
  
              Else
                  Console.WriteLine("Couldn't find MAC {0} in file {1}", phyAddr, fileName)
                  Console.Read()
                  close(FAILURE)
              End If
  
  
          Else
  
              Console.WriteLine("File {0} doesn't exist", fileName)
              Console.WriteLine("Please provide an absolute path to file")
              Console.Read()
              close(FAILURE)
          End If
  
      Else
          Console.WriteLine("File name {0} not recognized", fileName)
          Console.Read()
          close(FAILURE)
      End If
  
  
  End Sub
  
  Private Sub help()
      Console.WriteLine("Please call program as: ")
      Console.WriteLine("networkconfiguration -f datafile")
  End Sub
  
  Private Sub close(exitCode As Integer)
      Environment.Exit(exitCode)
  End Sub
  
  Private Function validName(name As String) As Boolean
      Static fileNameExpression As New Regex("^[\\:_a-zA-Z0-9.]+")
      Return fileNameExpression.IsMatch(name)
  End Function
  
  Private Function fileExists(name As String) As Boolean
      Return My.Computer.FileSystem.FileExists(name)
  
  End Function
  
  Private Function getMAC() As String
  
      Dim nic As NetworkInterface
      Dim result As String = String.Empty
  
      For Each nic In NetworkInterface.GetAllNetworkInterfaces()
          If nic.Name.Contains("Ethernet0") Then
              result = nic.GetPhysicalAddress.ToString
              Exit For
          End If
      Next
  
      Return result
  End Function
  
  
  Private Function searchFile(keyword As String, fileName As String) As String
  
      'store result
      Dim result As String = String.Empty
  
      'search for keyword in returned data
      Using reader As New StreamReader(fileName)
          While Not reader.EndOfStream
              Dim line As String = reader.ReadLine
              If line.Contains(keyword) Then
                  result = line
                  Exit While
              End If
          End While
      End Using
  
      Return result
  
  End Function
  
  Private Function splitLine(line As String) As String()
      Dim separator As Char = ";"
      Return line.Split(separator)
  End Function
  
  
  Private Function setupNetwork(ipAddr As String, netmask As String, gateway As String, dns1 As String, dns2 As String) As Boolean
  
      Dim mc As New ManagementClass("Win32_NetworkAdapterConfiguration")
      Dim moc As New ManagementObjectCollection
      Dim mo As ManagementObject
  
      moc = mc.GetInstances()
      For Each mo In moc
          'make sure this is ipenabled device
          'not something like memory card or VMWare
  
      Next
  
  
  
  
  
  
  End Function
  
  End Module
  </code></pre>