marcoborn
Goto Top

Batch mit Admin-Rechten starten

Hallo Forum,
ich schreibe gerade ein VBA-Skript, wo an einer Stelle mit Hilfe des Shell-Befehls eine Batch-Datei aufgerufen werden soll. In der Batch-Datei sind Befehle, die nur mit Admin-Rechten ausgeführt werden können.

Ich bin lokaler Admin und kann über Rechtsklick und "Als Administrator ausführen" auch die Batch problemlos starten. In VBA kann ich jedoch keinen Parameter mitliefern, mit welchen Rechten die Datei gestartet werden soll.

Ich habe eine Verknüpfung auf die Batch angelegt und dort in den Einstellungen festgelegt, dass die Batch immer mit Admin-Rechten zu starten ist. Rufe ich die Verknüpfung im Explorer auf, läuft die Batch auch sauber durch. Starte ich die Verknüpfung per VBA-Shell-Befehl wird sie jedoch wieder mit normalen Nutzerrechten gestartet.

Gibt es ggf. noch einen anderen Weg, die Batch zu laufen zu bewegen? Oder kann ich auf die Batch verzichten und dem Shell-Befehl von VBA irgendwie doch mitteilen, dass die Befehle als Admin gestartet werden sollen?

Bin für jeden Tipp dankbar.


Vielen Dank im voraus,
M. Born

Content-Key: 190501

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

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

Member: Pjordorf
Pjordorf Aug 30, 2012 at 14:38:37 (UTC)
Goto Top
Hallo,

Zitat von @MarcoBorn:
Batch-Datei sind Befehle, die nur mit Admin-Rechten ausgeführt werden können.
Schlechte Idee. Da kann dann jeder das Passwort auslesen.

In VBA kann ich jedoch keinen Parameter mitliefern, mit welchen Rechten die Datei gestartet werden soll.
Warum nicht?

von VBA irgendwie doch mitteilen, dass die Befehle als Admin gestartet werden sollen?
Was hast du denn bis jetzt und wie rufst du die Batchdatei tatsächlich auf?

Gruß,
Peter
Member: MarcoBorn
MarcoBorn Aug 30, 2012 at 14:42:48 (UTC)
Goto Top
Hallo Peter,
ich rufe die Datei wie folgt in VBA auf:
Shell "C:\Users\Born\Documents\SharpDevelop Projects\tools\reg.bat - Verknüpfung.lnk"

In der Batch selbst stehen folgende Befehle:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\tlbexp.exe" "C:\Users\Born\Documents\SharpDevelop Projects\FKGen\bin\Debug\FKGen.dll" /out:"C:\Users\Born\Documents\SharpDevelop Projects\FKGen\bin\Debug\FKGen.tlb"
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\Gacutil.exe" /i "C:\Users\Born\Documents\SharpDevelop Projects\FKGen\bin\Debug\FKGen.dll"
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe" "C:\Users\Born\Documents\SharpDevelop Projects\FKGen\bin\Debug\FKGen.dll"

Wie gesagt, ich könnte die 3 Befehle auch manuell in VBA starten, wenn ich die Shell mit Admin-Rechten starten könnte. Irgendeine Idee, wo der Fehler liegt?

Gruß,
M. Born
Member: Pjordorf
Pjordorf Aug 30, 2012 at 15:16:17 (UTC)
Goto Top
Hallo,

Zitat von @MarcoBorn:
Irgendeine Idee, wo der Fehler liegt?
Kein Fehler. Ist by Design so. Du solltest dir mal runas anschauen. Dann könnte dein
Shell "runas /user:administrator /noprofile ""C:\Users\Born\Documents\SharpDevelop Projects\tools\reg.bat - Verknüpfung.lnk"""  
so aussehen. Hier wird nach einem PWD gefragt. Oder du baust dir eine setup.exe. Aufgrund des Schlüsselworts Setup.exe wird auch die UAC angetriggert hier nach erhöhten Rechten zu fragen.

Gruß,
Peter
Member: MarcoBorn
MarcoBorn Aug 31, 2012 at 06:50:57 (UTC)
Goto Top
Hallo Peter,
mit Runas hatte ich auch schon mal experimentiert, aber irgendwie die Syntax nicht richtig gehabt. Dein o.g. Code funktioniert leider auch nicht. Er fragt nach dem Passwort, dann wird die Shell geschlossen, aber die Befehle scheinen nicht durchgelaufen zu sein. Gibt es eventuell Alternativen?

Viele Grüße,
M. Born
Member: Pjordorf
Pjordorf Aug 31, 2012 at 11:55:47 (UTC)
Goto Top
Hallo,

Zitat von @MarcoBorn:
aber irgendwie die Syntax nicht richtig gehabt.
Sollte aber jetzt nicht mehr das Problem sein, oder? face-smile

Dein o.g. Code funktioniert leider auch nicht.
Doch, das tut er. Ich habe allerdings direkt eine Batchdatei getestet, keine Verknüpfungface-smile

Zuerst prüfe das du auch den richtigen Benutzer in korrekter Schreibweise verwendest. Ein runas -? hilft da. Teste es im CMD Fenster aus.
runas /user:Domäne\Benutzer /noprofile "E:\Daten\Testdaten\Testbatch.bat"
Inhalt der Testbatch.bat ist
pause

cls
set
pause

dir e: /p
pause
Du kannst natürlich auch /user:benutzer@domäne.suffix nehmen. Es bleibt dir überlassen. Wenn das korrekt funktioniert kannst du es mit einer Verknüpfung testen. Du solltest dann den Hinweis bekommen das die .lnk Datei keine gültige Win32 Anwendung ist.
runas /user:Domäne\Benutzer /noprofile "E:\Daten\Testdaten100\weiterer Ordner\Testbatch.bat.lnk"
Dieses kann gelöst werden indem du die .lnk Datei folgenderweise aufrufst
runas /user:Domäne\Benutzer /noprofile "rundll32 shell32.dll,ShellExec_RunDLL E:\Daten\Testdaten100\weiterer Ordner\Testbatch.bat.lnk"
.
Und jetzt verpacken wir das ganze für deinen VBA aufruf
Shell "runas /user:Domäne\Benutzer /noprofile ""rundll32 shell32.dll,ShellExec_RunDLL C:\Users\Born\Documents\SharpDevelop Projects\tools\reg.bat - Verknüpfung.lnk""  
Es kann allerdings sein das dir das ü wegen unterschiedliche Zeichensätze schwierigkeiten macht.

So sollte es jetzt gehen.face-smile

Gruß,
Peter
Member: MarcoBorn
MarcoBorn Sep 03, 2012 at 13:30:17 (UTC)
Goto Top
Hallo Peter,
nochmals Danke. Ich komme leider erst in ein paar Tagen dazu, hier weiter zu testen, da ein anderes Projekt mir keine Zeit lässt, hier weiter zu basteln. Ich melde mich dann noch mal, ob es geklappt hat.

Viele Grüße,
M. Born
Member: MarcoBorn
MarcoBorn Sep 13, 2012 at 11:13:54 (UTC)
Goto Top
Hallo Peter,
ich habe heute Deinen Code getestet und es funktioniert endlich.

Vielen, vielen Dank.
M. Born
Member: Pjordorf
Pjordorf Sep 13, 2012 at 12:14:04 (UTC)
Goto Top
Hallo,

Zitat von @MarcoBorn:
und es funktioniert endlich.
Machst du dann bitte noch ein How can I mark a post as solved? dran? Danke.

Gruß,
Peter
Member: MarcoBorn
MarcoBorn Sep 13, 2012 at 17:51:25 (UTC)
Goto Top
Danke für den Hinweis, hatte ich vergessen.