krautundrueben
Goto Top

VBScript mit Administratorrechten startet kein weiteres VBScript

Hallo, ich möchte ein VBScript innerhalb eines VBScripts aufrufen. Dies gelingt auch ohne Administratorrechte problemlos.
Starte ich hingegen das aufrufende VBScript mit Admin-Rechten, startet das aufzurufende VBScript nicht.

Folgende Befehle benutze ich zum Ausführen des VBScripts mit Adminrechten. Funktioniert auch, die Benutzerkontensteuerung meldet sich jedenfalls.

If WScript.Arguments.length =0 Then
Set objShell = CreateObject("Shell.Application")

objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else

'--------------
'Start of code

' Hier wird der eigentliche Programmcode eingetragen

end if


Ich freue mich über mögliche Lösungsvorschläge.

Content-Key: 445994

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

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

Member: rubberman
rubberman Apr 30, 2019 at 16:05:33 (UTC)
Goto Top
Was ist "der eigentliche Programmcode"? Beachte dass das Arbeitsverzeichnis deines Scripts sobald es mit erhöhten Rechten gestartet worden ist, automatisch System32 ist. Falls du also irgend etwas mit relativen Pfaden machen willst, musst du vorher wieder in das Scriptverzeichnis wechseln. Ansonsten funktioniert dein Code, was du mit einem einfachen
WScript.Echo "Hello, World!"
herausfinden kannst, sofern das Script nicht mit einem anderen Account gestartet wurde.

Steffen
Member: KrautundRueben
KrautundRueben Apr 30, 2019 at 16:16:46 (UTC)
Goto Top
Hallo, hier ist mal ein Beispiel:

Ich möchte ein anderes Script ausführen.
Ohne Adminrechte funktioniert es problemlos. Mit Adminrechten nicht.


Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cscript J:\MeinScript\Test.vbs"

Gruß Arno
Member: Kraemer
Kraemer Apr 30, 2019 at 16:20:42 (UTC)
Goto Top
Und der Admin bekommt das j: auch gemappt?
Member: rubberman
Solution rubberman Apr 30, 2019 at 16:29:25 (UTC)
Goto Top
Zitat von @KrautundRueben:
objShell.Run "cscript J:\MeinScript\Test.vbs"
Hmm, die Run Methode ruft IMO eine CMD Shell auf. Falls der tatsächliche Pfad Leerzeichen beinhalten sollte, teste
objShell.Run "cscript ""J:\MeinScript\Test.vbs"""

Steffen
Member: KrautundRueben
KrautundRueben Apr 30, 2019 at 16:42:19 (UTC)
Goto Top
es handelt sich bei J:\ um ein ganz "normales" Festplattenlaufwerk. Unter den anderen Laufwerken C:\ oder E:\ funktioniert es aber genauso wenig.

Es ist kein Netzlaufwerk.

Alle anderen Befehle in meinem Script funktionieren auch und ich kann problemlos auf alle Laufwerksbuchstaben zugreifen.

Das einzige, wo es sich weigert , ist das Ausführen der vbs-Datei.
Member: KrautundRueben
KrautundRueben Apr 30, 2019 at 16:54:15 (UTC)
Goto Top
Verzeihung, jetzt war ich zu voreilig, der Befehl objShell.Run "cscript ""J:\MeinScript\Test.vbs""" funktioniert nicht.

Es befinden sich auch keine Leerzeichen im Pfad.
Member: rubberman
rubberman Apr 30, 2019 at 17:05:39 (UTC)
Goto Top
Tja, was soll ich sagen - funktioniert bei mir im Test tadellos.
Erneut der Hinweis, auch im 2. Script ist das Arbeitsverzeichnis noch System32. Ist schwierig irgendetwas zu orakeln, ohne zu wissen was du da eigentlich ausführst.

Steffen
Member: KrautundRueben
KrautundRueben Apr 30, 2019 at 19:16:52 (UTC)
Goto Top
Jetzt hab ich es herausgefunden. Es war eine falsche Pfadangabe. Ich hatte eine Pfadangabe wie folgt: Include ".\ClassIniFile.vbs"

Ich habe diese abgeändert auf : Include "J:\Test\ClassIniFile.vbs"

Dein Gedanke mit dem Arbeitsverzeichnis hat mich meinen Code nochmal genauer nachschauen lassen. Vielen Dank.

Gruß Arno
Member: Kraemer
Kraemer May 01, 2019 at 09:21:16 (UTC)
Goto Top
Zitat von @KrautundRueben:

Jetzt hab ich es herausgefunden. Es war eine falsche Pfadangabe. Ich hatte eine Pfadangabe wie folgt: Include ".\ClassIniFile.vbs"

Ich habe diese abgeändert auf : Include "J:\Test\ClassIniFile.vbs"

Dein Gedanke mit dem Arbeitsverzeichnis hat mich meinen Code nochmal genauer nachschauen lassen. Vielen Dank.

Gruß Arno
Lol