netsh Befehl in Kombination mit runas zeigt keine Wirkung

vandread

Lt. Commander
Registriert
Nov. 2004
Beiträge
1.372
Hallo,

da ich öfters mal die IPv4 Adresse meines Netwerkadapter fest vergeben muss um mich mit gewisser Hardware verbinden zu können, will ich mir ein kleines Tool schreiben welches das für mich über einen Button erledigt.

Im Hintergrund soll das ganze einfach über einen netsh Befehl durchgeführt werden. Wenn es eine bessere Möglichkeit gibt dann bitte Bescheid geben! (:

Als Beispiel nehme ich jetzt einfach mal folgenden Befehl:
Code:
netsh interface ip set address name="LAN-Verbindung" source=static addr=192.168.1.7 mask=255.255.255.0

Der Befehl funktioniert nur wenn man Administratorrechte hat. Mir ist leider kein Befehl bzw. keine Möglichkeit bekannt mit der man die IP-Adresse ohne Admin-Rechne ändern kann. Also wird das mit dem runas Befehl kombiniert. Ich probiere das Ganze auf einer VM aus mit dem Benutzer User der Admin ist und das Passwort für den Benutzer ist user.

Der Befehl sieht also wie folgt aus:
Code:
runas /profile /user:User "netsh interface ip set address name="LAN-Verbindung" source=static addr=192.168.1.7 mask=255.255.255.0"

Es wird sofort nach dem Passwort gefragt, nach der Eingabe des Passworts popt kurz ein neues cmd-Fenster auf und das war es. Im bisherigen cmd-Fenster steht dass der Befehl versucht wird als Benutzter "VIRTUALMACHINE\User" zu starten und das wars... Der Befehl zeigt aber keine Wirkung.

Wenn ich das cmd als Administrator starte (Rechtsklick starten als Administrator) und den Befehlt dort ausführe (natürlich ohne runas) funktioniert alles so wie ich es mir vorstelle...

Wo liegt mein Fehler?

Vielen Dank! (:
 
Der Fehler liegt daran, das du mit runas nicht an der Benutzerkontensteuerung vorbei kommst.
 
Kannst du mir das eventuell etwas genauer beschreiben? Kann mir da nichts genaues vorstellen. (:
 
Syntaxfehler? Versuch mal:
runas /profile /user:User netsh interface ip set address name="LAN-Verbindung" source=static addr=192.168.1.7 mask=255.255.255.0
 
Seit Vista, gibt es ein verschärftes Security Model. Sprich wenn du auf ein Programm Rechsklick und dann "als Administrator ausführen" klickst, dann fragt dich die Benutzerkontensteuerung ab ob du das auch wirklich willst.

Runas ist aber nicht in der Lage die Berechtigungsstufe anzuheben Stichwort ist hier "elevate". Runas ist nur in der Lage Programme unter einem anderen Benutzer zu starten, diesem aber nicht mit erweiterten Rechten auszustatten, sprich die Abfrage der Benutzerkontensteuerung zu triggern.

Du musst da einen kleinen Umweg gehen. Wenn du Win7 benutzt dann zb Über die powershell

Der Befehl dazu
Code:
powershell -Command "Start-Process 'xyz.bat' -Verb runAs"

und dann schreibst du in xyz.bat deinen Befehl den du gerne ausgeführt will.
also
netsh interface ip set address name="LAN-Verbindung" source=static addr=192.168.1.7 mask=255.255.255.0
Falls alles richtig ist, frag dann das System nach Adminrechten.

Alternativ. Du deaktivierst die Benutzerkontensteuerung (keine gute Idee, weil man damit wieder Sicherheitslücken ins System bringt)
 
Zuletzt bearbeitet:
Sorry, aber mit runas /profile /user:Administrator "Befehl" lade ich doch das (Administrator-)Profil und führe den "Befehl" mit Administratorrechten systemweit aus. Deswegen der Schalter /profile (und die Passwortabfrage). Oder etwa nicht? Bei mir klappt das problemlos (Windows 7 Professional 64bit).
 
@nikell
Nein ein Administrator hat seit Vista von sich aus keine erweiterten Rechte per Standard.

Dein Befehl funktioniert also nur wenn
a) du die Benutzerkontensteuerung deaktiviert hast oder
b) der Befehl keine erweiterten Rechte benötigt

ansonsten bekommst du so etwas, hier einmal mit regedit versucht
RUNAS-FEHLER: regedit kann nicht ausgeführt werden
740: Der angeforderte Vorgang erfordert erhöhte Rechte.
 
Danke für die Erklärung! Mit der von dir genannten Methode funktioniert es. Nur ist das für mich nicht wirklich schön, aber es geht wohl nicht anders...

Ich wollte mir eigentlich ein kleines Java-Programm schreiben dass 3 Buttons enthält, welche 3 unterschiedliche IPs eintragen. Doch diese Methode würde dazu führen dass man bei jeden Klick den Admin-Bunternamen eingeben muss und natürlich das PW. Das macht das ganze natürlich nicht wirklich praktisch.

Habe gehofft man könnte mit einem Befehl direkt die IP ändern, sodass ich das schön in einem Tool verpacken kann... Schade eigentlich. ):
 
Das Java Programm kannst du nicht von vorn herein mit erhöhten Rechten laufen lassen? Denn dann sind ja alle Aktionen die das Programm selbst ausführt mit erweiterten Rechten und du brauchst da nicht extra Kennwörter eingeben.
 
@stage Mit der Passwortabfrage hat man alle Rechte und kann jeden Befehl ausführen. Genau wie unter GNU/Linux.
 
@stage
Ich bin mir nicht sicher, habe bisher nur folgendes zu dem Thema finden können (http://stackoverflow.com/questions/1385866/java-run-as-administrator) und dort habe ich gelesen dass ich ein manifest für meine Java-Anwendung brauche. Aber so wie ich es verstanden habe hat dann die ganze Java-VM Adminrechte und das würde ich auch nicht so cool finden. Daher habe ich versucht alles mit einem Befehl abzuwickeln.

@nikell
Also bei mir funktioniert es leider nicht. Wenn ich die Anführungszeichen weg nehme (also so wie du es vorgeschlagen hast) erhalte ich einen Syntaxfehler.
 
@nikell
Eben nicht so wie unter Linux. Unter Linux hat man dazu "sudo root <command>" und danach wird das root kennwort abgefragt, soweit so gut.

Unter Windows hängt da aber wie schon mehrmals geschrieben die UAC dazwischen. Wenn ich mich mit Admin anmelde am System, dann kommt trotzdem die UAC Abfrage wenn ich Systemkritische Sachen durchführen will, wie z.B. regedit oder das netsh commando.

Und falls du immer noch falsche Behauptungen verbreitest, würde ich vorschlagen du testest das vorher bei dir aus.

Siehe auch: https://social.technet.microsoft.co...nable-additional-levels?forum=w7itprosecurity
und: https://msdn.microsoft.com/en-us/library/bb756922.aspx

Be aware that runas does not provide the ability to launch an application with an elevated access token, regardless of whether it is a standard user with privileges like a Backup Operator or an administrator. The runas command grants the user the ability to launch an application with different credentials.
 
Zuletzt bearbeitet:
@vandread Ich habe es ausprobiert mit deinem Originalcode (Windows-Befehlsskript .cmd). Das Fenster flasht zwar nur auf, ABER der Befehl wird ausgeführt.
Bei mir : Kann man unter Netzwerkverbindungen - LAN-Verbindung - Eigenschaften - Internetprotokoll Version 4 (TCP/IPv4) - Eigenschaften ersehen.
 
Kann ich ehrlich gesagt nicht verstehen warum das bei dir funktioniert. Ich habe im ersten Moment vermutet dass du eventuell für den Administrator-Benutzer eventuell kein Kennwort vergeben hast, aber selbst dann funktioniert das bei mir nicht...

Komisch aber vielen Dank an dir und natürlich auch an stage!
 
Hallo, ich habe (natürlich) das eingebaute Administratorkonto benutzt, das bei mir freigeschaltet ist und (natürlich) Kennwortgeschützt ist. Dazu folgendes:

"There's a difference between being logged in to an account that is part of the administrators group and running either (a) elevated or (b) as the builtin Administrator account.

Anytime you run as Administrator, you are always elevated -- by definition. So if you run /user:administrator that window will be elevated when it opens, you WON'T get a UAC prompt and the netsh command should run.

But because the builtin Administrator account always runs elevated and doesn't generate UAC prompts from runas, it's a security risk, especially if it doesn't have a password. That's why Microsoft disables the Administrator account by default and requires that you enable it first."


Für Benutzer aus der Administratorengruppe versuche mal dieses Tool 32/64bit) http://code.kliu.org/misc/elevate/ .

Gruß, nikell.
 
Zurück
Oben