scroller
Goto Top

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!

Content-Key: 167988

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

Printed on: April 25, 2024 at 04:04 o'clock

Member: TsukiSan
TsukiSan Jun 14, 2011 at 14:01:33 (UTC)
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
Member: Clijsters
Clijsters Jun 14, 2011 at 15:14:40 (UTC)
Goto Top
Member: Clijsters
Clijsters Jun 14, 2011 at 15:17:38 (UTC)
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
Member: Scroller
Scroller Jun 15, 2011 at 04:11:17 (UTC)
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
Member: Biber
Biber Jun 15, 2011 at 04:20:09 (UTC)
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
Member: AndreasHoster
AndreasHoster Jun 15, 2011 at 08:12:11 (UTC)
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.
Member: Scroller
Scroller Jun 15, 2011 at 12:47:58 (UTC)
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
Member: Clijsters
Clijsters Jun 15, 2011 at 16:48:41 (UTC)
Goto Top
Da fühlt man sich ignoriert...
Member: Scroller
Scroller Jun 15, 2011 at 18:43:19 (UTC)
Goto Top
Wieso fühlst Du dich ignoriert??
Hab mich doch bei allen bedankt face-smile

Gruss
SC