sarekhl
Goto Top

WMI-Berechtigungen unter Windows 7

Hallo zusammen,

ich möchte unter Windows 7 folgendes Kommando ausführen:

WMIC NICCONFIG WHERE macaddress="00:1D:E0:6F:B3:83" CALL SetGateways ("172.16.1.1"),(1)
(Änderung des Standardgateways für eine bestimmte Netzwerkkarte)

Das Problem:

Gebe ich das (selbst wenn der Benutzer Mitglied der Administratorengruppe ist!!!) in einem CMD-Fenster ein, dann wird die Änderung nicht durchgeführt, und ich bekomme einen Rückgabewert "67". Nur wenn ich das CMD-Fenster explizit als Administrator ausführe (Rechtklick auf das CMD-Logo, dann "Als Administrator ausführen"), dann wird der Befehl korrekt ausgeführt und der Rückgabewert ist "0".

Nun möchte ich das ganze aber innerhalb eines Scripts ablaufen lassen, und das Script soll normal per Doppelklick gestartet werden. Wie kann ich dafür sorgen, daß meine WMI-Anweisung trotzdem ausgeführt wird? Es muß nur an einem Rechner funktionieren, und den kann ich so konfigurieren, daß es läuft. Ich weiß nur nicht, was ich da konfigurieren muß.


Danke im Voraus,
Sarek

Content-Key: 201184

Url: https://administrator.de/contentid/201184

Printed on: April 28, 2024 at 15:04 o'clock

Member: Nr60730
Nr60730 Feb 02, 2013 updated at 21:43:25 (UTC)
Goto Top
moin,

naja, das unter w7 ein auch ein admin "die" Dosbox braucht - in die man nix reinschieben, nur per rechtsklick pasten - kann ist ja nun schon länger bekannt und beschränkt sich nicht auf Wmic Befehle...

  • Mit Boardmitteln geht das nicht
  • mit einer Software eines gewissn Marc R, der Gehaltsempfänger in Redmont ist jedoch schon

  • Harken an der Sache - das muss ein (Admin)Passwort im klartext mitegeben werden.

Von daher wird das mit dem ändern des Gateways via Batch eher nix.
Also nix sauberes und unsauber mag ich bekannterweise ungern veröffentlichen.

ruß

mein ustav hänt
Member: Friemler
Friemler Feb 02, 2013 at 23:30:05 (UTC)
Goto Top
Hallo Sarek,

wenn das Konto, unter dem das Script ausgeführt werden soll, ein Admin-Konto ist, funktioniert die Umgehung der UAC-Abfrage per Aufgabenplanung sehr gut. Hier ist es sehr ausführlich am Beispiel des CCleaners beschrieben.

Gruß
Friemler
Member: SarekHL
SarekHL Feb 03, 2013 at 21:47:44 (UTC)
Goto Top
wenn das Konto, unter dem das Script ausgeführt werden soll, ein Admin-Konto ist, funktioniert die Umgehung der UAC-Abfrage per Aufgabenplanung sehr gut.

Interessante Lösung - und funktioniert tatsächlich auch für mein Programm. Allerdings öffnet sich das auf diesem Weg leider nicht mehr als aktives Fenster, so daß man es erst anklicken muß, eher man das Kennwort eingeben kann. Naja ... trotzdem erst mal Danke ;)
Member: rubberman
rubberman Feb 03, 2013 updated at 23:09:08 (UTC)
Goto Top
Hallo SarekHL.

Trick 17:
Unter "Programm/Skript"
C:\Windows\System32\cmd.exe

Unter "Argumente hinzufügen"
/c start cmd /c "C:\pfad\zu\script.bat"

Grüße
rubberman

EDIT: @Friemler Du hast völlig recht in deinem Tut, dass ein zusätzliches cmd /c nötig ist, um das Fenster wie üblich schließen zu lassen. Habe oben angepasst...
Member: Friemler
Friemler Feb 03, 2013 at 22:40:07 (UTC)
Goto Top
Hallo Sarek,

versuche folgendes: Du startest ja sicher ein Batchfile mit dem WMIC-Befehl. Statt das Batchfile im geplanten Task direkt zu starten, starte eine CMD-Instanz, die eine CMD-Instanz startet, die Dein Batchfile startet face-wink. Dann sollte das Fenster im Vordergrund sein.

Siehe auch dieses Tutorial von mir, den Abschnitt über die Erstellung der Aufgabe in der Aufgabenplanung.

Gruß
Friemler
Member: SarekHL
SarekHL Feb 04, 2013 updated at 05:15:16 (UTC)
Goto Top
Trick 17:
Unter "Programm/Skript"
C:\Windows\System32\cmd.exe

ok, vielleicht hätte ich mich etwas genauer ausdrücken sollen. Es handelt sich nicht um ein Script, sondern um ein VB6-Programm, welches folgendes tut:

  1. Aus der Registry die MAC-Adresse der Netzwerkkarte, das "richtige" Standardgateway und ein Kennwort-Hash auslesen (alle drei Werte habe ich dort selbst hinterlegt)
  2. Per WMI das zur Zeit für die Netzwerkkarte mit der entsprechenden MAC-Adresse eingetragene Standardgateway ermitteln
  3. WENN das Standardgateway dem in der Registry hinterlegten "richtigen" Standardgateway entspricht:
    1. Öffnen einer MessageBox mit Ja- und Nein-Button mit der Frage, ob die Internetverbindung getrennt werden soll.
    2. Wenn Ja angeklickt wird, wird per WMI das Standardgateway für diese Netzwerkkarte auf 127.0.0.1 gesetzt
  4. WENN das Standardgateway dem in der Registry hinterlegten "richtigen" Standardgateway NICHT entspricht:
    1. Öffnen einer Inputbox zur Passworteingabe
    2. Wenn das Paßwort korrekt ist (also der Hash dem in der Registry hinterlegten entspricht) wird per WMI das Standardgateway auf den in der Registry hinterlegten "richtigen" Wert gesetzt.

Das Ganze entspringt dem Tipp von win-dozer auf meine Frage vom 8. Januar. Unter seinem alten WindowsXP-System (da hatte er aus welchen Gründen auch immer Adminrechte) funktionierte das auch noch hervorragend, aber inzwischen hat der Arzt auf Windows 7 umgestellt. Und da habe ich Wert drauf gelegt, daß er nicht mit einem Admin-Konto arbeitet.

Das Problem ist nun eben, daß die Messagebox und auch die Inputbox bei dem Aufruf über den Aufgabenplaner nicht als aktives Fenster geöffnet werden. Wenn noch ein anderes Programmfenster offen ist, sieht man zuerst nur das Programmsymbol in der Taskleiste und muß es erst anklicken, um die Messagebox bzw. die Inputbox hervorzuholen. Und selbst wenn kein anderes Programmfenster offen ist, muß man die Inputbox erst anklicken, damit man das Paßwort eingeben kann. Das ist alles nicht schlimm, aber nervig ...
Member: DerWoWusste
DerWoWusste Feb 04, 2013 at 07:47:55 (UTC)
Goto Top
Moin Sarek.

Allerdings öffnet sich das auf diesem Weg leider nicht mehr als aktives Fenster, so daß man es erst anklicken muß, eher man das Kennwort eingeben kann. Naja ...
Kann ich nicht nachvollziehen. Wo bei dem genannten Lösungsweg musst Du noch ein Kennwort eingeben? Das Kennwort muss nirgendwo eingegeben werden, nicht einmal im Task, wenn Du einstellst, dass der angemeldete Nutzer (der ja Admin ist) verwendet wird.
Member: SarekHL
SarekHL Feb 04, 2013 updated at 11:22:37 (UTC)
Goto Top
Zitat von @DerWoWusste:
Kann ich nicht nachvollziehen. Wo bei dem genannten Lösungsweg musst Du noch ein Kennwort eingeben?

Siehe dazu meinen Kommentar von heute morgen 5:59 Uhr und den darin enthaltenen Link zu dem früheren Thread. Sinn der ganzen Aktion ist es ja gerade, daß man als Benutzer ein Kennwort eingeben MUSS, um das richtige Standardgateway gesetzt zu bekommen und damit Netzwerkzugriff zu haben.
Member: Friemler
Friemler Feb 04, 2013 at 12:39:56 (UTC)
Goto Top
Hallo Sarek,

hast Du denn den Lösungsvorschlag getestet? Du kannst natürlich auch eine EXE statt eines Batchscripts mit dem Codeschnipsel von rubberman starten.

Gruß
Friemler
Member: SarekHL
SarekHL Feb 04, 2013 at 13:04:23 (UTC)
Goto Top
hast Du denn den Lösungsvorschlag getestet? Du kannst natürlich auch eine EXE statt eines Batchscripts mit dem Codeschnipsel von rubberman starten.

Der PC steht seit gestern 18 Uhr wieder in der Praxis des Arztes, heute morgen mußte der Praxisbetrieb ja wieder laufen. So schnell komme ich an die Kiste nicht mehr dran face-sad
Member: DerWoWusste
DerWoWusste Feb 04, 2013 at 13:08:49 (UTC)
Goto Top
Ok, verstehe.

Noch zwei Anregungen nebenher: Man braucht keine Adminrechte für das Setzen des S.-Gateways, es reicht die Mitgliedschaft in Netzwerkkonfigurations-Operatoren. Zweitens: Man kann einer Batch auch "elevate" als Präfix voranstellen (z.B. elevate notepad), um diese elevated zu starten. Voraussetzung: das Elevation-Powertoy ist installiert: http://technet.microsoft.com/de-de/magazine/2008.06.elevation.aspx
Member: Friemler
Friemler Feb 04, 2013 at 13:55:14 (UTC)
Goto Top
Hallo Sarek,

da es sich um ein VB6-Programm handelt und Du damit Zugriff auf die Windows APIs hast, gäbe es auch noch die Möglichkeit, dass das Programm zuerst prüft, ob es mit erhöhten Rechten läuft. Wenn nicht, startet es sich selbst neu und fordert dabei die erhöhten Rechte an.

Siehe hier

Gruß
Friemler
Member: SarekHL
SarekHL Feb 05, 2013 updated at 16:14:05 (UTC)
Goto Top
Zitat von @DerWoWusste:
Noch zwei Anregungen nebenher: Man braucht keine Adminrechte für das Setzen des S.-Gateways, es reicht die Mitgliedschaft in Netzwerkkonfigurations-Operatoren.

Da hatte ich den benutzer bereits reingepackt. Das Problem war aber ja, daß selbst ein Benutzer mit administrativen Rechten das Programm nicht ausführen konnte, wenn er es nicht explizit "als Administrator" ausgeführt hat.

Zweitens: Man kann einer Batch auch "elevate" als Präfix voranstellen (z.B. elevate notepad), um diese elevated zu starten. Voraussetzung: das Elevation-Powertoy ist installiert: http://technet.microsoft.com/de-de/magazine/2008.06.elevation.aspx

"Elevated" heißt "Als Administrator ausführen", richtig? Dann bringt es mir ja nichts, denn es soll ja eben auch funktionieren, wenn der Benutzer kein Administrator ist und das Administratorkennwort nicht kennt. Oder verstehe ich da etwas falsch?


Zitat von @Friemler:
da es sich um ein VB6-Programm handelt und Du damit Zugriff auf die Windows APIs hast, gäbe es auch noch die Möglichkeit, dass das Programm zuerst prüft, ob es mit erhöhten Rechten läuft. Wenn nicht, startet es sich selbst neu und fordert dabei die erhöhten Rechte an.

Siehe hier

Das klingt sehr interessant, auch wenn es leider auf Englisch ist. Aber da werde ich mich mal durchkämpfen, wenn ich die notwendige Ruhe habe. Danke!
Member: DerWoWusste
DerWoWusste Feb 05, 2013 updated at 16:24:09 (UTC)
Goto Top
Weder noch.
Windows buggt rum, wenn es nach Adminberechtigungen fragt, das ist schlicht falsch benannt. Gib einfach die Credentials des Nutzers ein - ehrlich, ist ein seit Vista bekannter Bug, den MS nicht rausnimmt.
und das Elevation-Powertoy "elevate" kann auch hier genutzt werden. Ja, habe ich längst alles durch, wenn auch nicht mit wmic, sondern mit netsh.