scroller

VBS Befehl als string zusammenbasteln und dann per run ausführen

Hi,

ich will cacls per vbscript - run mehtode staten.
Irgendas geht schief. Gibts in vbs nicht wie in Powershell die Möglichkeit einen Befehl als String zusammensetzen und ihn dann auszuführne?
(wie invoke-expression in Powershell.)


Hier mein code vieleicht findet ja jemand meinen Fehler:

set fso = CreateObject("Scripting.FileSystemObject")
set onet = CreateObject("Wscript.Network")
set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objShell = CreateObject("Shell.Application")
set oSA = CreateObject("Shell.Application")


sTMP = WshShell.ExpandEnvironmentStrings("%temp%") & "\"


tp = stmp & "cacls.exe"
sDesktop = WshShell.SpecialFolders("Desktop") & "\"


WshShell.Run "cmd /c " & tp & " " & sDesktop & " /E /P ad\" & oNet.Username & ":R",3,true


Danke SC!
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 167988

Url: https://administrator.de/forum/vbs-befehl-als-string-zusammenbasteln-und-dann-per-run-ausfuehren-167988.html

Ausgedruckt am: 04.06.2025 um 16:06 Uhr

TsukiSan
TsukiSan 14.06.2011 um 16:01:33 Uhr
Goto Top
Hallo Scroller,

fasse bitte deine Schnippets in die richtige Formatierung, dann liest es sich einfacher!

Eventuell liegt ein Schreibfehler bei dir vor?
Meintest du eventuell
tp = stmp & "calc.exe" ?

Gruss
Tsuki
Clijsters
Clijsters 14.06.2011 um 17:14:40 Uhr
Goto Top
Clijsters
Clijsters 14.06.2011 um 17:17:38 Uhr
Goto Top
Er möchte Berechtigungen setzen, (hoffe ich), von daher gehe ich davon aus er meinte CACLS,

welche sich bei mir aber nicht im TEMP-Ordner sondern unter %SYSTEMROOT%\System32 befindet...

Desweiteren fehlen meiner Meinung nach Leerzeichen in der Befehlszeile.
UND: Wenn Leerzeichen in den Pfadangaben verwendet werden, (%TEMP% = "C:\dokumente und einstellungen\user\temp" oder wie auch immer)
nicht die Anführungszeichen vergessen face-smile

Ich bevorzuge was das angeht eher ... & Chr(34) & ... anstelle von Dingen, wie """" oder " """

Gruß
Dominique
Scroller
Scroller 15.06.2011 um 06:11:17 Uhr
Goto Top
Hallo Zusammen,

danke für eure Antworten.
Hier noch ergänzedne Infos face-smile :

An einem Thin client soll der Desktop für den User schreibgeschützt sein.
Dazu lade ich cacls.exe vom netz auf das Ding runter (da das abgespeckte windows auf dem Gerät die datei nicht beinhaltet)

Diese wird nach %temp% kopiert von da dann gestartet.

Beim Start Poppt das Fenster kurz auf und schliesst sich wieder. Das wars dann face-sad

Danke
SC
Biber
Biber 15.06.2011 um 06:20:09 Uhr
Goto Top
Moin Scroller,

das empfohlene Vorgehen beim Testen von Schnipseln ist das Ausführen vom CMD-prompt aus.
Nur so kannst du auch die Fehlermeldungen lesen und gegebenfalls hier weitergeben.

Bitte starte den Schnipsel von der Eingabeaufforderung aus und erzähl uns dann, was du siehst.

Grüße
Biber
AndreasHoster
AndreasHoster 15.06.2011 um 10:12:11 Uhr
Goto Top
Und als weiterer Tipp:
Nie davon ausgehen, daß der Computer macht was er soll.
Will sagen:
Nachkontrollieren ob Dein String richtig zusammengebaut ist könnte helfen:
sExec="cmd /c " & tp & " " & sDesktop & " /E /P ad\" & oNet.Username & ":R"  
wscript.echo sExec
WshShell.Run sExec,3,true
Dann siehst Du nämlich, was Du tatsächlich versuchst auszuführen und das könnte man dann auch mal direkt in einer CMD ausprobieren.
Dann sieht man auch, daß als Ergebnis dies kommt:
cmd /c c:\temp\cacls.exe C:\Dokumente und Einstellungen\xxx\Desktop\ /E /P ad\xxx:R
Und da sieht man doch innerhalb von ca. 0,5 Sekunden, wo das Problem ist, oder nicht?

Wie sagte doch Prof. Tanenbaum: Ein guter Programmierer braucht nur seinen Kopf und ein printf (bei vbs halt wscript.echo) zum Debuggen.
Scroller
Scroller 15.06.2011 um 14:47:58 Uhr
Goto Top
Hallo,

Danke für Eure Antworten alle,

Es war ein Leerzeichen Problem beim Desktop. Die Lösung war:

sDesktop = """ & WshShell.SpecialFolders("Desktop") & """

Gruss
SC
Clijsters
Clijsters 15.06.2011 um 18:48:41 Uhr
Goto Top
Da fühlt man sich ignoriert...
Scroller
Scroller 15.06.2011 um 20:43:19 Uhr
Goto Top
Wieso fühlst Du dich ignoriert??
Hab mich doch bei allen bedankt face-smile

Gruss
SC