today12
Goto Top

Selbstlöschende VBS

Hallo Leute,

ist es möglich, eine vbs zu zu gestalten, dass es sich nach dem Skriptablauf von selbst auflöst ?!

Das Skript liegt meist in dem Windows Ordner, deshalb werden zum löschen Adminrechte benötigt.

Danke im Voraus face-smile

Content-Key: 220822

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

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

Member: DerWoWusste
DerWoWusste Oct 30, 2013 at 20:08:38 (UTC)
Goto Top
Hi.

Eine Batch kann sich selbst löschen, wüsste nicht, warum das bei einer .vbs anders sein sollte. Wenn das Skript mit Systemrechten läuft, kann es natürlich auch in c:\windows löschen - starte es also als Startskript oder Shutdownskript oder als Task mit Systemrechten.
Member: TsukiSan
TsukiSan Oct 31, 2013 at 05:51:20 (UTC)
Goto Top
...mit Beispiel, um die Behauptung von DWW zu untermauern.
Erstelle irgendwo eine VBS-Datei mit dem Namen "Test.vbs"
und gib folgende Zeilen ein:
Set FSO = CreateObject("Scripting.FileSystemObject")  
FSO.DeleteFile ("Test.vbs")  

Wenn das - wie oben schon erwähnt - mit entsprechenden Rechten läuft, dann funktioniert das auch.

Gruss
Tsuki
Member: today12
today12 Oct 31, 2013 at 05:57:16 (UTC)
Goto Top
schon mal ne Tolle Hilfe face-smile
...kann ich am anfang vom skript festlegen.. zB. den runas Befehl... so dass das ganze Script als Admin ausgeführt wird ?
Member: rubberman
rubberman Oct 31, 2013 at 13:35:36 (UTC)
Goto Top
Hallo today12,
mal abgesehen davon, dass ich weder verstehe warum das Script im Windows Verzeichnis liegen, noch warum es sich selbst löschen muss ...

Das ist so wie du dir das vorstellst nicht umsetzbar. Ein laufender Prozess kann nicht nachträglich mit höheren Rechte versehen werden. Wenn du das aus dem eigenen Scriptcode heraus umsetzen willst, dann muss sich das Script selbst mit erhöhten Rechten neu aufrufen. Beispiel:
Set objWSH = CreateObject("WScript.Shell")  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
On Error Resume Next
Call objWSH.RegRead("HKEY_USERS\S-1-5-19\Environment\TEMP")  
If Err Then
  CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """", "", "runas", 1  
  WScript.Quit
End If
On Error Goto 0
objWSH.CurrentDirectory = objFSO.GetParentFolderName(WScript.ScriptFullName)
' Dein Code hier ...  
objFSO.DeleteFile(WScript.ScriptFullName)
Dass das UAC um Bestätigung bittet, versteht sich von selbst.
Zeile 10 kann für dich von Interesse sein, da das Arbeitsverzeichnis des Scripts mit erhöhten Rechten automatisch im system32 Verzeichnis landet. Diese Zeile setzt es zurück auf das Verzeichnis, in dem das Script liegt.

Grüße
rubberman