Public Class Form1
Dim NetzwerkAdapterName As String
Dim Int As Integer = 0
Dim adapter As NetworkInterface 'Eine Netzwerkadapter Instanz
Dim adapters As NetworkInterface() 'Array mit allen Netzwerkadaptern
Dim NetzwerkAdapterListeInfo As New RichTextBox
Dim DNS(2) As String
Dim DNSBefehl(2) As String
Dim Lesebox As New RichTextBox
Dim DNSTimeSave As Integer
'////////////////////////////////////////////////////// Admin-Status-Prüfung
Private Function IsUserAnAdmin() As Boolean
Try
Dim identity = WindowsIdentity.GetCurrent()
Dim principal = New WindowsPrincipal(identity)
Return principal.IsInRole(WindowsBuiltInRole.Administrato r)
Catch ex As Exception
Return False
End Try
End Function
'////////////////////////////////////////////////////// NotifyIcon Events
Private Sub NotifyIcon_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon.MouseClick
If e.Button = MouseButtons.Left Then
Me.WindowState = FormWindowState.Normal
Me.ShowInTaskbar = True
Me.TopMost = True
Me.Show()
End If
End Sub
Private Sub NotifyIcon_MouseDoubleClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon.MouseDoubleClick
If MessageBox.Show("Are You Safe to close the Application?", "Info", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Me.Close()
End If
End Sub
'////////////////////////////////////////////////////// Minimier event
#Region "Konstanten"
Const WM_SYSCOMMAND As Int32 = &H112
Const SC_MINIMIZE As Int32 = &HF020
#End Region
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = WM_SYSCOMMAND Then
If m.WParam.ToInt32 = SC_MINIMIZE Then
RaiseEvent Minimize(New EventArgs())
End If
End If
End Sub
Public Event Minimize(ByVal e As EventArgs)
Public Sub Me_Minimize(ByVal e As EventArgs) Handles Me.Minimize
Me.WindowState = FormWindowState.Minimized
Me.ShowInTaskbar = False
Me.Hide()
End Sub
'////////////////////////////////////////////////////// Form Events
Private Sub DNSMain_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
My.Settings.Save()
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' 1. ZUERST Admin-Status klären, BEVOR die UI initialisiert wird
If My.Settings.StartAsAdmin OrElse My.Settings.FirstStart Then
If Not IsUserAnAdmin() Then
AsAdmin()
Return ' Sofort abbrechen, da diese Instanz sauber gekillt wird
End If
End If
' 2. Wenn Rechte passen, die eigentliche Routine starten
Startingroutine()
' DNS Standardliste laden mit Absicherung gegen Formatfehler
If DNSStandartList.Lines IsNot Nothing AndAlso DNSStandartList.Lines.Length > 0 Then
For Each Item As String In DNSStandartList.Lines
If Not String.IsNullOrEmpty(Item) AndAlso Item.Contains("/") Then
Try
Dim Parts As String() = Item.Split("/"c)
If Parts.Length >= 2 Then
DNSBevorzugtListe.Items.Add(Parts(0).Trim())
DNSAlternativeListe.Items.Add(Parts(1).Trim())
End If
Catch ex As Exception
' Ignoriere defekte Zeilen in der Liste
End Try
End If
Next
End If
End Sub
Public Sub Startingroutine()
' Abfrage beim allerersten Start der App
If My.Settings.FirstStart Then
If MessageBox.Show("Administration is required for full usability." + vbNewLine + vbNewLine + "Do you always want to start this programm as an admin?", "Ask", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
My.Settings.StartAsAdmin = True
My.Settings.FirstStart = False
My.Settings.Save()
If Not IsUserAnAdmin() Then
AsAdmin()
Return
End If
Else
My.Settings.StartAsAdmin = False
My.Settings.FirstStart = False
My.Settings.Save()
End If
End If
' Optische Häkchen im Menü anhand des ECHTEN Admin-Status setzen
If IsUserAnAdmin() Then
MenüStripAsAdmin.Image = My.Resources.Check
MenüStripAsUser.Image = Nothing
Else
MenüStripAsAdmin.Image = Nothing
MenüStripAsUser.Image = My.Resources.Check
End If
DisplayDnsConfiguration()
End Sub
Public Sub AsAdmin()
Dim oProcessStartInfo As New System.Diagnostics.ProcessStartInfo()
With oProcessStartInfo
.FileName = Application.ExecutablePath
.UseShellExecute = True
.Verb = "runas" ' Erzwingt den Windows UAC-Dialog
End With
' Beendet die aktuelle nicht-privilegierte Instanz sofort und restlos
Application.ExitThread()
Environment.Exit(0)
Catch ex As Win32Exception
' Wenn der Benutzer im Windows-Dialog auf "Nein" klickt
MessageBox.Show("Das Programm benötigt Administratorrechte, um Änderungen an den Netzwerkeinstellungen vorzunehmen.", "Rechte benötigt", MessageBoxButtons.OK, MessageBoxIcon.Warning)
' UI anpassen, da wir als normaler User weiterlaufen
MenüStripAsAdmin.Image = Nothing
MenüStripAsUser.Image = My.Resources.Check
End Try
End Sub
Public Sub DisplayDnsConfiguration()
adapters = NetworkInterface.GetAllNetworkInterfaces()
NetzwerkAdapterListe.Items.Clear()
NetzwerkAdapterListe2.Items.Clear()
NetzwerkAdapterListeInfo.Clear()
For Each Me.adapter In adapters
Dim properties As IPInterfaceProperties = adapter.GetIPProperties()
If NetzwerkAdapterListe.Items.Contains("Realtek PCIe GbE Family Controller") Then NetzwerkAdapterListe.Text = "Realtek PCIe GbE Family Controller"
If NetzwerkAdapterListe.Items.Contains("Ethernet") Then NetzwerkAdapterListe.Text = "Ethernet"
If NetzwerkAdapterListe2.Items.Contains("Realtek PCIe GbE Family Controller") Then NetzwerkAdapterListe2.Text = "Realtek PCIe GbE Family Controller"
If NetzwerkAdapterListe2.Items.Contains("Ethernet") Then NetzwerkAdapterListe2.Text = "Ethernet"
End Sub
'////////////////////////////////////////////////////// UI & Input Validierung
Private Sub IPadress_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs)
Dim c = e.KeyChar.ToString
If c <> "." AndAlso Not Char.IsDigit(e.KeyChar) AndAlso Not Char.IsControl(e.KeyChar) Then
e.Handled = True
End If
End Sub
Private Sub IPusefollowingIP_TextChanged(sender As Object, e As EventArgs)
If IPAdress.TextLength = 3 OrElse IPAdress.TextLength = 7 Then
IPAdress.Text = IPAdress.Text + "."
IPAdress.SelectionStart = IPAdress.TextLength
IPAdress.Focus()
End If
End Sub
Private Sub DNSBevorzugt_TextChanged(sender As System.Object, e As System.EventArgs) Handles DNSBevorzugt.TextChanged
If DNSBevorzugt.TextLength = 3 OrElse DNSBevorzugt.TextLength = 7 Then
DNSBevorzugt.Text = DNSBevorzugt.Text + "."
DNSBevorzugt.SelectionStart = DNSBevorzugt.TextLength
DNSBevorzugt.Focus()
End If
End Sub
Private Sub DNSAlternative_TextChanged(sender As System.Object, e As System.EventArgs) Handles DNSAlternative.TextChanged
If DNSAlternative.TextLength = 3 OrElse DNSAlternative.TextLength = 7 Then
DNSAlternative.Text = DNSAlternative.Text + "."
DNSAlternative.SelectionStart = DNSAlternative.TextLength
DNSAlternative.Focus()
End If
End Sub
'////////////////////////////////////////////////////// Click & Checkbox Events
Private Sub ToolStripLabel3_Click(sender As System.Object, e As System.EventArgs)
MsgBox("Free to use, share it with your Friends")
End Sub
Private Sub DNSMenüON_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DNSMenüON.Click
DNSStatusOnOff.Image = My.Resources.DNSON
DNSMenüON.Image = My.Resources.Check
DNSMenüOFF.Image = Nothing
End Sub
Private Sub DNSMenüOFF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DNSMenüOFF.Click
DNSStatusOnOff.Image = My.Resources.DNSOFF
DNSMenüON.Image = Nothing
DNSMenüOFF.Image = My.Resources.Check
End Sub
Private Sub MenüStripAsAdmin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenüStripAsAdmin.Click
If MessageBox.Show("Do you want to restart the application as Admin now?", "Restart", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
My.Settings.StartAsAdmin = True
My.Settings.Save()
AsAdmin()
Else
My.Settings.StartAsAdmin = False
My.Settings.Save()
MenüStripAsAdmin.Image = Nothing
MenüStripAsUser.Image = My.Resources.Check
End If
End Sub
Private Sub MenüStripAsUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenüStripAsUser.Click
My.Settings.StartAsAdmin = False
My.Settings.Save()
MenüStripAsAdmin.Image = Nothing
MenüStripAsUser.Image = My.Resources.Check
End Sub
Private Sub DNSBevorzugtListe_SelectedIndexChanged(sender As System.Object, e As System.EventArgs)
For Each item In DNSBevorzugtListe.SelectedItems
DNSBevorzugt.Text = item.ToString
DNSAlternativeListe.SelectedIndex = Me.DNSBevorzugtListe.Items.IndexOf(item)
DNSAlternative.Text = DNSAlternativeListe.SelectedItem.ToString()
Next
DNS(1) = DNSBevorzugt.Text
DNS(2) = DNSAlternative.Text
DNSBefehl(1) = "netsh interface ip add dns name=""" + NetzwerkAdapterName + """ addr=" + DNS(1) + " index=1"
DNSBefehl(2) = "netsh interface ip add dns name=""" + NetzwerkAdapterName + """ addr=" + DNS(2) + " index=2"
End Sub
Private Sub NetzwerkAdapterListe_SelectedIndexChanged(sender As System.Object, e As System.EventArgs)
Dim Pluseone As Integer = Val(NetzwerkAdapterListe.SelectedIndex) + 1
If NetzwerkAdapterListeInfo.Lines.Length > Pluseone Then
Dim LineText As String = NetzwerkAdapterListeInfo.Lines(Pluseone)
If Not String.IsNullOrEmpty(LineText) Then
NetzwerkAdapterName = LineText
End If
End If
End Sub
Private Sub DNSActivBevorzugt_TextChanged(sender As System.Object, e As System.EventArgs)
DNS(1) = DNSActivBevorzugt.Text
End Sub
Private Sub DNSActivAlternativ_TextChanged(sender As System.Object, e As System.EventArgs)
DNS(2) = DNSActivAlternativ.Text
End Sub
Private Sub DNSChangeAutoTime_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DNSChangeAutoTime.ValueChanged
Dim Umrechner As Integer = Val(DNSChangeAutoTime.Value.ToString) * 60000
Dim UmrechnerSS As Integer = Val(DNSChangeAutoTime.Value.ToString) * 60
DisplayDNSSwitchingTime.Text = UmrechnerSS.ToString()
DNSTimeSave = UmrechnerSS
DNSTimer.Interval = Umrechner
End Sub
'////////////////////////////////////////////////////// Netzwerksteuerungs-Logik
Public Sub CMD()
Using CMD As New Process()
Infocard.Text = "Start Commandprompt..."
CMD.StartInfo.FileName = "cmd.exe"
CMD.StartInfo.CreateNoWindow = True
CMD.StartInfo.RedirectStandardOutput = True
CMD.StartInfo.RedirectStandardInput = True
CMD.StartInfo.UseShellExecute = False
CMD.Start()
CMD.StandardInput.WriteLine("@echo off")
Infocard.Text = "Write DNS..."
If Not String.IsNullOrEmpty(DNSBefehl(1)) Then CMD.StandardInput.WriteLine(DNSBefehl(1))
If Not String.IsNullOrEmpty(DNSBefehl(2)) Then CMD.StandardInput.WriteLine(DNSBefehl(2))
Infocard.Text = "Waiting for Task..."
If Not String.IsNullOrEmpty(DNS(1)) Then DNSActivBevorzugt.Text = DNS(1)
If Not String.IsNullOrEmpty(DNS(2)) Then DNSActivAlternativ.Text = DNS(2)
End Using
End Sub
Dim zähler As Integer
Private Sub DNSTimer_Tick(sender As System.Object, e As System.EventArgs) Handles DNSTimer.Tick
If zähler < DNSBevorzugtListe.Items.Count Then
DNS(1) = DNSBevorzugtListe.Items(zähler).ToString()
DNS(2) = DNSAlternativeListe.Items(zähler).ToString()
DNSBefehl(1) = "netsh interface ip add dns name=""" + NetzwerkAdapterName + """ addr=" + DNS(1) + " index=1"
DNSBefehl(2) = "netsh interface ip add dns name=""" + NetzwerkAdapterName + """ addr=" + DNS(2) + " index=2"
CMD()
zähler += 1
If zähler >= DNSBevorzugtListe.Items.Count Then zähler = 0
Dim UmrechnerSS As Integer = Val(DNSChangeAutoTime.Value.ToString) * 60
DisplayDNSSwitchingTime.Text = UmrechnerSS.ToString()
End If
End Sub
Private Sub DNSTimerS_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DNSTimerS.Tick
If Val(DisplayDNSSwitchingTime.Text) > 0 Then
DisplayDNSSwitchingTime.Text = (Val(DisplayDNSSwitchingTime.Text) - 1).ToString()
End If
If DisplayDNSSwitchingTime.Text = "0" Then
For index As Integer = 0 To 11
If index = 0 Then NotifyIcon.Icon = My.Resources.DNSSWITCH1
If index = 1 Then NotifyIcon.Icon = My.Resources.DNSSWITCH2
If index = 2 Then NotifyIcon.Icon = My.Resources.DNSSWITCH1
If index = 3 Then NotifyIcon.Icon = My.Resources.DNSSWITCH2
If index = 4 Then NotifyIcon.Icon = My.Resources.DNSSWITCH1
If index = 5 Then NotifyIcon.Icon = My.Resources.DNSSWITCH2
If index = 6 Then NotifyIcon.Icon = My.Resources.DNSSWITCH1
If index = 7 Then NotifyIcon.Icon = My.Resources.DNSSWITCH2
If index = 8 Then NotifyIcon.Icon = My.Resources.DNSSWITCH1
If index = 9 Then NotifyIcon.Icon = My.Resources.DNSSWITCH2
If index = 10 Then NotifyIcon.Icon = My.Resources.DNSSWITCH1
If index = 11 Then
NotifyIcon.Icon = My.Resources.DNSON1
DNSTimerS.Stop()
End If
Next
End If
End Sub
Private Sub IPAutobutton_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles IPAutobutton.CheckedChanged
If IPAutobutton.Checked Then
IPAdress.Enabled = False
IPStandartgateaway.Enabled = False
IPSubnetzwerk.Enabled = False
IPAdress.BackColor = Color.Gainsboro
IPStandartgateaway.BackColor = Color.Gainsboro
IPSubnetzwerk.BackColor = Color.Gainsboro
End If
End Sub
Private Sub IPfollowingButton_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles IPfollowingButton.CheckedChanged
If IPfollowingButton.Checked Then
IPAdress.Enabled = True
IPStandartgateaway.Enabled = True
IPSubnetzwerk.Enabled = True
IPAdress.BackColor = Color.White
IPStandartgateaway.BackColor = Color.White
IPSubnetzwerk.BackColor = Color.White
End If
End Sub
Private Sub DNSAutoButton_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles DNSAutoButton.CheckedChanged
If DNSAutoButton.Checked Then
DNSBevorzugt.Enabled = False
DNSAlternative.Enabled = False
DNSBevorzugt.Text = ""
DNSAlternative.Text = ""
DNSBevorzugt.BackColor = Color.Gainsboro
DNSAlternative.BackColor = Color.Gainsboro
End If
End Sub
Private Sub DNSFollowingButton_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles DNSFollowingButton.CheckedChanged
If DNSFollowingButton.Checked Then
DNSBevorzugt.Enabled = True
DNSAlternative.Enabled = True
DNSBevorzugt.BackColor = Color.White
DNSAlternative.BackColor = Color.White
End If
End Sub
Private Sub DNSChangetoDefault_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles DNSChangetoDefault.CheckedChanged
If DNSChangetoDefault.Checked Then
DNSBefehl(1) = "ipconfig /flushdns"
DNSBefehl(2) = "ipconfig /registerdns"
Infocard.Text = "Try to Reset DNS.."
CMD()
End If
End Sub
Private Sub LogoAbbout_Click(sender As System.Object, e As System.EventArgs) Handles LogoAbbout.Click
MsgBox("By Kraftwürze v 1.0.0.5")
End Sub
Private Sub StandartSetDNS_Click(sender As System.Object, e As System.EventArgs) Handles StandartSetDNS.Click
If DNSFollowingButton.Checked Then
DNSBefehl(1) = "netsh interface ip add dns name=""" + NetzwerkAdapterListe2.Text + """ addr=" + DNSBevorzugt.Text + " index=1"
DNSBefehl(2) = "netsh interface ip add dns name=""" + NetzwerkAdapterListe2.Text + """ addr=" + DNSAlternative.Text + " index=2"
Infocard.Text = "Try to Set DNS.."
NotifyIcon.Icon = My.Resources.DNSON1
CMD()
ElseIf DNSAutoButton.Checked Then
DNSBefehl(1) = "ipconfig /flushdns"
DNSBefehl(2) = "ipconfig /registerdns"
Infocard.Text = "Try to Reset DNS.."
NotifyIcon.Icon = My.Resources.DNSOFF1
CMD()
End If
End Sub
Private Sub StandartSetIP_Click(sender As System.Object, e As System.EventArgs) Handles StandartSetIP.Click
If IPfollowingButton.Checked Then
DNSBefehl(1) = "netsh interface ipv4 set address name=""" + NetzwerkAdapterListe2.Text + """ static " + IPAdress.Text + " " + IPSubnetzwerk.Text + " " + IPStandartgateaway.Text
DNSBefehl(2) = ""
Infocard.Text = "Try to set IP.."
CMD()
ElseIf IPAutobutton.Checked Then
DNSBefehl(1) = "netsh int ip reset"
DNSBefehl(2) = ""
Infocard.Text = "Try to Reset IP.."
CMD()
End If
End Sub
Private Sub DNSSwitchConfirm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DNSSwitchConfirm.Click
If DNSChangetoDefault.Checked Then
CMD()
ElseIf DNSChangeAutomatic.Checked Then
Dim Umrechner As Integer = Val(DNSChangeAutoTime.Value.ToString) * 60000
NotifyIcon.Icon = My.Resources.DNSON1
DNSTimer.Interval = Umrechner
DNSTimer.Start()
DNSTimerS.Start()
End If
End Sub
Private Sub CustomListButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CustomListButton.Click
Dim OpenFileDialog1 As New OpenFileDialog
Dim Splitter1, Splitter2 As String
OpenFileDialog1.Filter = "Text|*.txt*"
OpenFileDialog1.FilterIndex = 1
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
Lesebox.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText)
End If
For Each Item As String In Lesebox.Lines
If Not String.IsNullOrEmpty(Item) AndAlso Item.Contains("/") Then
Try
Splitter1 = Item.Split("/"c)(0).Trim()
Splitter2 = Item.Split("/"c)(1).Trim()
If Not DNSBevorzugtListe.Items.Contains(Splitter1) Then DNSBevorzugtListe.Items.Add(Splitter1)
If Not DNSAlternativeListe.Items.Contains(Splitter2) Then DNSAlternativeListe.Items.Add(Splitter2)
Catch ex As Exception
End Try
End If
Next
End Sub
End Class
[VB.NET] Windows DNS Jumper (Switcher) 07/28/2021 - Coding Releases - 0 Replies https://i.epvpimg.com/OrgLaab.png
http://i.epvpimg.com/QdL7cab.jpg
[DNS] Regi und Rang auf der HP mit DNS ?? Wie ?? 04/03/2010 - Metin2 Private Server - 3 Replies Hai Com
Wir haben jetzt eine HP die wir gut finden nur wir haben keine
ahnung wie wir die Regi page, Und die rangliste draufbekommen sollen weil wir ja DynDNS haben :D
Jetzt meine Frage wen jemand da Ahnung hätte könnte er mir ein Link zu einem tut geben oder mir das schnell erklären oder über Teamviewer machen (zeigen)
Were echt super :D
Mfg Sponqqi ^^