Batch / VBS - W10: Aufruf mit erhöhten Rechten durch Admin-User

cumulonimbus8

Fleet Admiral
Registriert
Apr. 2012
Beiträge
18.380
Moin!

Eine kleine Bastelfrage.

Google überhäuft mich mit der Info zu VBS, dass diese Grundsyntax ein Programm mit Admin-Rechten aufruft:
APPLShell.ShellExecute "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe", "-Windowstyle Hidden …", "", "runas", 1

Das klappt aber nicht.
Da zudem zu finden war, dass man C:\Windows\SysWOW64 ausweichen muss weil es darin definitiv nicht liefe (64-Bit..?!), habe ich alles unter System32 einsortiert. Auch das ruft die PowerShell nicht mit Admin-Rechten auf - was am Ergebnis zu erkennen ist, das mit Admin-Rechten eintritt und hier ohne ausbleibt.

Wie bekommt man das gelöst? Ist eine 32-Bit-PowerShell vonnöten oder finden sich andere Wege - immerhin als Admin-User! - einen Prozess mit erhöhten Rechten auszulösen?

Eine selbstkompilierte EXE kann ich über die Kompatibilität auf Admin-Status zwingen, aber bei der PowerShell.Exe gibt es dies nicht.

Schlussbemerkung: die VBS soll aus der Registry heraus aufgerufen werden, also nicht über eine Verknüpfung, damit fällt auch dieser Ansatz aus.

CN8
 
cumulonimbus8 schrieb:
Eine selbstkompilierte EXE kann ich über die Kompatibilität auf Admin-Status zwingen, aber bei der PowerShell.Exe gibt es dies nicht.
Mach das doch über die Aufgabenplanung! Dort kannst Du der Powershell die nötigen Privilegien mit einem einzigen Häkchen zuweisen und musst keinerlei Verrenkungen in Kauf nehmen.
 
cumulonimbus8 schrieb:
die VBS soll aus der Registry heraus aufgerufen werden
Also auch keine Aufgabenplanung.
Außerdem - die VBS tut Dinge in ihrer Sprache die vllt. auch die PowerShell kann, deren Syntax ich mir aber nicht auch noch zumuten möchte. Somit ist die VBS die Vorstufe zur PowerShell und nicht zu umschiffen.

→ Es ist egal ob das hier die PowerShell ist die aufgerufen wird. Irgendetwas soll Admin_Rechte bekommen und VBS bekommt es offebar an diesem Beispiel nicht hin. Was zufällig gleich mit zu klären wäre.

CN8
 
Gib mal bitte ein paar mehr Informationen, was deine VBS machen soll und weshalb dafür Adminberechtigungen benötigt werden. Vielleicht gibt es ja einen anderen Lösungsansatz.
 
Abteilung: Haaalt! 😉

Mir geht es nur um das abstrakte Problem, dass VBS eine Anwendung mit erhöhten Rechten(*) zu starten - und die Anleitungen funktionieren nicht.

Warum; und wie lässt sich das lösen?

Es kann jede Anwendung aus jedem Grund in zukünftigen Basteleien sein. Und der Punkt, aus der Registry (Kontextmenü i.d.R.) nicht mit erhöhten Rechten etwas auslösen zu können, wurmt mich schon lange.

CN8

(*) erhöht; was ist da eigentlich wie erhöht? Ich kann etwas normal oder als Admin ausführen, warum diese Beschönigungsformel, nach der man kaum googlen würde, statt einfach Admin-Rechte?
 
Aus der Registry? Also per Autostart oder wie?

Funktioniert es denn aus der Powershell heraus (32/64bit)?

Wenn ich bei mir
PowerShell:
PS C:\> $wsShell = new-object -ComObject shell.application
PS C:\> $wsShell.ShellExecute

OverloadDefinitions
-------------------
void ShellExecute (string, Variant, Variant, Variant, Variant)

PS C:\> $wsShell.ShellExecute("CMD.EXE","","","runas",3)
PS C:\>

reinfüttere, dann kriege ich durchaus ein UAC Prompt und dann eine Kommandozeile mit Adminrechten.

Start-Process erlaubt auch einfach die Angabe eines -Verb. Wenn man da runas angibt, dann funktioniert das auch. VBS muß nicht sein (fragt sich eh, wie lang das noch drinbleiben wird).

Schlußendlich kann man auch mit .config Dateien herkommen. Wobei ich nie geschaut habe, ob die nur .exe Dateien in die UAC zwingen können oder ob das auch mit Scripten geht.


PS - elevation heißt halt genausowenig "erhöhen" wie share "teilen" bedeutet; klar kann mans damit übersetzen, aber es geht die Hälfte verloren.

Process Elevation wird der Spaß halt bezeichnet, weil man eben MEHR Rechte bekommt als mit "normalen" Ausführungmodus.
Für Windows steckt man nicht per se in der Admingruppe, wenn man eine Anwendung ausführt. Diese Mitgliedschaft muß man sich erst "erkämpfen" (per UAC Bestätigung). Bei näherem Interesse einfach mal in Richtung Split Token gucken.
 
  • Gefällt mir
Reaktionen: areiland
RalphS schrieb:
Aus der Registry? Also per Autostart oder wie?
Diese Rückfrage tut weh. «Aus der Registry» ist - aus der Registry heraus! Etwa von HKEY_CLASSES_ROOT\Drive\shell\VERSUCH\command aus. Nichts mit Autostart (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run) obwohl es da auch recht hilfreich wäre.

RalphS schrieb:
Wenn ich bei mir

reinfüttere, dann kriege ich durchaus ein UAC Prompt und dann eine Kommandozeile mit Adminrechten.
Aha. Und das in der REG wie oben angegeben ausgeführt - samt Paramterübergabe des dann in der gestarteten CMD gestarteten Skripts auf welkche dynamisch Weise - das geht?
(Und jeder eingeschränkte User holt sich so mal eben per Skript Adminrechte? Oh, oh…)
Dass ich meine eigenen Adminrechte nicht weitergeben kann ist nach meiner Ansicht Edelmurks und kein Sicherheitsfeature. (Dieses MS-Schwimmreifenkonzept, auch UAC, hilft vielleicht dem Anfänger, aber es behindert den Könner.)

Es geht nicht darum manuell eine PS oder eine CMD auszulösen - es muss aus der Registry heraus gehen und Parameter dynamisch übergeben können; dahin wo diese hin sollen.

PS: dass im Englischen viele Bedeutungen von to elevate existieren (versuchs mal mit unserem Auszug) hindert uns nicht im Kontext zu bleiben, also «angehobene» [ex levare] oder «erhöhte» Rechte zu meinen. Ich frag’ mich halt nur angehoben gegenüber was und auf welchen Level (um dieses Wort zu quälen) und was gibts noch darüber?

Mein Ziel wäre es irgendwas aus der REG unmittelbar mit nötig hohen Rechten (ich laviere mich da mal rum) auszulösen und nicht unbedingt eine Startrampe [ohne diese höheren Rechte] die dann ihrerseits das Gewünschte mit ausreichend hohen Rechten auslöst (bei mir dann eine erhöhte PS-Zeile aus einer PS heraus - putzig genug 😉). Es wird aber wohl diese Zwischenlösung brauchen.

CN8
 
cumulonimbus8 schrieb:
Schlussbemerkung: die VBS soll aus der Registry heraus aufgerufen werden, also nicht über eine Verknüpfung, damit fällt auch dieser Ansatz aus.
Stand dort etwas von Autostart? Aber es stand etwas von «aus der Registry heraus». Nicht mehr und nicht weniger.
Wenn die Formulierung unklar war - wie hätte sie besser ausfallen können?

CN8
 
Zurück
Oben