Wie Batch-Datei schreiben: DNS ändern wenn Programm.exe geschlossen wurde?

TOMillr

Enthusiast
Thread Starter
Mitglied seit
22.04.2011
Beiträge
290
Ich würde gerne unter Windows 7/8 folgende Befehlabfolge über eine Batch-Datei abwickeln:

1. Eine bestimmte DNS-Server Adresse eintragen
2. Programm.exe ausführen
3. Wenn Programm.exe durch Benutzer geschlossen wird > DNS-Server auf DHCP umstellen
4. Batch beenden

Hat jemand sowas vielleicht schon mal ausprobiert?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
zum setzen
netsh interface ipv4 set dnsservers "Lan-Verbindung" static 8.8.8.8 Primary

zurück auf dhcp
netsh interface ipv4 set dnsservers Name="Lan-Verbindung" source=dhcp

Für den befehl sind allerdings erhöhte rechte erforderlich wenn du normalen benutzern nicht die Konfiguration der netzwerkeinstellungen erlaubst.
 
Und wenn ich ohnehin als Admin angemeldet bin? Kann ich die Batch-Datei dann einfach über eine Verknüpfung ausführen - oder muss ich noch mal extra die UAC Prompt abnicken?
 
Eine Aufgabe mit erhöhten Rechten anlegen und die die Batch-Datei aufrufen lassen, die Aufgabe kannst du über eine Verknüpfung aufrufen. Dadurch wird die Batch-Datei mit Adminrechten ohne UAC-Meldung ausgeführt.
 
Ah prima, werde ich mal ausprobieren.

Wie sieht es denn mit dem "warten, bis Programm beendet wurde"? Gibt es da vielleicht einen passenden WAIT-Befehl für?
 
Ich habe es jetzt mal mit folgendem Code unter Windows 8 x64 probiert:

Code:
netsh interface ipv4 set dnsservers name="WiFi" static 1.1.1.1 primary
start "Fenstertitel" "C:\Pfad\Dateiname.exe" /WAIT
netsh interface ipv4 set dnsservers name="WiFi" source=dhcp

Problem dabei ist aber, dass die Befehle zwar ausgeführt werden, nach dem Programmstart im zweiten Schritt aber der "/wait"-Befehl nicht beachtet und gleich zur dritten Zeile gesprungen wird...
 
Ich weiss nicht was dein Programm wann und wie ausgibt, aber ich fange "wurde erfolgreich ausgefuehrt" so ab:
Code:
rem programm.exe && was jetzt
rem auf dein Beispiel
netsh interface ipv4 set dnsservers name="WiFi" static 1.1.1.1 primary
start "Fenstertitel" "C:\Pfad\Dateiname.exe" && netsh interface ipv4 set dnsservers name="WiFi" source=dhcp
Ich vermute aber du wirst das "start" weglassen muessen und das Programm direkt aufrufen muessen. Da ich einfach mal tippe, dass Start nach erfolgreichem starten den Errorcode 0 ausgibt.
 
Ah prima, so hat es jetzt hingehauen. Danke dafür :)

Gibt es eigentlich auch die Möglichkeit, über den netsh-Befehl auch einen sekundären DNS Server einzutragen? Müsste ich dann einfach eine zweite Zeile hinzufügen und "primary" gegen "secondary" austauschen?
 
Das hab ich immer zum Verteilen von festen DNS Einstellungen genutzt:
Code:
netsh interface ip set dns "LAN-Verbindung" static 10.210.71.15
netsh interface ip add dns "LAN-Verbindung" 10.210.71.10
 
warum macht ihr es euch denn so kompliziert?

Ein simples:
Code:
netsh interface ... für das setzen vom neuen DNS
PROGRAMM.EXE
netsh interface ... für das zurückbiegen der DNS Settings
sollte auch genügen... Denn die Batch bleibt solange aktiv, wie das Programm läuft und wartet auch solange mit dem nächsten Befehl, wie die PROGRAMM.EXE eben aktiv ist.

Das ganze funktioniert halt solange gut, wie man das zu startende Programm direkt ausführt. Nutzt man hingegen irgend einen Launcher oder sowas in der Art, wo eben erst ein Stückchen Programm das Hauptprogramm aufruft, geht es halt nicht. Aber dann gehen die anderen Methoden wohl auch nicht ;)

PS: welchen Sinn hat das ganze überhaupt?
Ich mein, für was braucht ein Programm dediziert nen anderen DNS Server?
Warum nicht den einen richtigen DNS Server nutzen und dem die DNS Einträge beibringen, bzw. diesem optimalerweise nen Forwarder mitgeben, der sich die DNS Einträge holt?
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh