Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBScript unter beliebigem Prozessname ausführen

Mitglied: manuel-r

manuel-r (Level 3) - Jetzt verbinden

18.07.2012 um 22:25 Uhr, 6377 Aufrufe, 2 Kommentare, 3 Danke

Guten Abend alle zusammen

Schön des öfteren habe ich mich darüber etwas geärgert, dass alle laufenden VBScripte im Taskmanager nur als wscript.exe oder cscript.exe aufgeführt sind statt einen aussagekräftigen Namen zu tragen. Will man ein Script beenden indem man den Prozess killt erwischt man bei n+1 laufenden wscript-Prozessen nach Murphys Gesetz garantiert zuerst mal den falschen

Wie dem auch sei. Ich habe dafür jetzt eine Lösung die mir erlaubt zukünftig Scripte unter einem beliebigen Prozessnamen auszuführen.

Dazu brauchen wir zuerst natürlich mal das VBScript (s. unten) und speichern es irgendwo unter runasprocess.vbs
01.
set objShell = WScript.CreateObject("WScript.Shell") 
02.
set objSysEnv = objShell.Environment("PROCESS") 
03.
set objFileSys = CreateObject("Scripting.FileSystemObject") 
04.
 
05.
if Wscript.Arguments.Count < 4 then 
06.
	MsgBox("Es wurden zu wenige Parameter angegeben. Der korrekte Aufruf lautet " & vbCRLF & "runasprocess.vbs <processname> <wscript|cscript> <32bit|64bit> <scriptpath> <arg1> <arg2> <arg...n>") 
07.
	wscript.quit 
08.
end if 
09.
 
10.
strTempPath = lcase(objSysEnv("temp")) & "\" 
11.
strHost32 = lcase(objSysEnv("windir")) & "\system32\" 
12.
strHost64 = lcase(objSysEnv("windir")) & "\system32\syswow64\" 
13.
strProcName = lcase(left(Wscript.Arguments(0), 20)) 
14.
strScriptHost = lcase(left(Wscript.Arguments(1),2)) 
15.
strHostVer = lcase(left(Wscript.Arguments(2),2)) 
16.
strRunScript = lcase(Wscript.Arguments(3)) 
17.
strNewProcPath = strTempPath & strProcName & "_" & strScriptHost & strHostVer & ".exe" 
18.
strNewProcArgs = "" 
19.
 
20.
'argumente für zielscript lesen 
21.
for intArg = 4 to Wscript.Arguments.Count - 1 
22.
	strNewProcArgs = strNewProcArgs & wscript.arguments(intArg) & " " 
23.
next 
24.
 
25.
'prüfen ob zielscript existiert 
26.
if not objFileSys.FileExists(strRunScript) then 
27.
	MsgBox("Das angegebene Script existiert nicht. Bitte prüfen Sie Ihre Eingabe.") 
28.
	wscript.quit 
29.
end if 
30.
 
31.
'prüfen ob korrekte angabe für scriptinghost 
32.
if strHostVer <> "64" and strHostVer <> "32" then 
33.
	MsgBox("Für die Scripthost-Version ist nur die Angabe 32Bit oder 64Bit zulässig. Bitte prüfen Sie Ihre Eingabe.") 
34.
	wscript.quit 
35.
end if 
36.
 
37.
'temporäre kopie eines früheren durchlaufs löschen 
38.
if objFileSys.FileExists(strNewProcPath) then 
39.
	objFileSys.DeleteFile strNewProcPath 
40.
end if 
41.
 
42.
'scriptinghost wscript-32bit in neue exe in temp-pfad kopieren 
43.
if strHostVer = "32" and strScriptHost = "ws" then 
44.
	if not objFileSys.FileExists(strHost32 & "wscript.exe") then 
45.
		MsgBox("Es existiert keine 32Bit-Version des Windows-Scriptinghost in " & strHost32) 
46.
		wscript.quit 
47.
	end if 
48.
	strScriptHostSrc = strHost32 & "wscript.exe" 
49.
	objFileSys.CopyFile strHost32 & "wscript.exe", strTempPath, True 
50.
	objFileSys.MoveFile strTempPath & "wscript.exe", strNewProcPath 
51.
end if 
52.
 
53.
'scriptinghost cscript-32bit in neue exe in temp-pfad kopieren 
54.
if strHostVer = "32" and strScriptHost = "cs" then 
55.
	if not objFileSys.FileExists(strHost32 & "wscript.exe") then 
56.
		MsgBox("Es existiert keine 32Bit-Version des Windows-Scriptinghost in " & strHost32) 
57.
		wscript.quit 
58.
	end if 
59.
	objFileSys.CopyFile strHost32 & "cscript.exe", strTempPath, True 
60.
	objFileSys.MoveFile strTempPath & "cscript.exe", strNewProcPath 
61.
end if 
62.
 
63.
'scriptinghost wscript-64bit in neue exe in temp-pfad kopieren 
64.
if strHostVer = "64" and strScriptHost = "ws" then 
65.
	if not objFileSys.FileExists(strHost32 & "wscript.exe") then 
66.
		MsgBox("Es existiert keine 32Bit-Version des Windows-Scriptinghost in " & strHost32) 
67.
		wscript.quit 
68.
	end if 
69.
	objFileSys.CopyFile strHost64 & "wscript.exe", strTempPath, True 
70.
	objFileSys.MoveFile strTempPath & "wscript.exe", strNewProcPath 
71.
end if 
72.
 
73.
'scriptinghost cscript-64bit in neue exe in temp-pfad kopieren 
74.
if strHostVer = "64" and strScriptHost = "cs" then 
75.
	if not objFileSys.FileExists(strHost32 & "wscript.exe") then 
76.
		MsgBox("Es existiert keine 32Bit-Version des Windows-Scriptinghost in " & strHost32) 
77.
		wscript.quit 
78.
	end if 
79.
	objFileSys.CopyFile strHost64 & "cscript.exe", strTempPath, True 
80.
	objFileSys.MoveFile strTempPath & "cscript.exe", strNewProcPath 
81.
end if 
82.
 
83.
'zielscript mit kopie des scriptinghost ausführen 
84.
strCmd = strNewProcPath & " " & strRunScript & " " & strNewProcArgs 
85.
objShell.Run strCmd,1,false 
86.
wscript.quit
Die Syntax für den Aufruf lautet
01.
runasprocess.vbs <processname> <wscript|cscript> <32bit|64bit> <scriptpath> <arg1> <arg2> <arg...n>
Hierbei gilt:
  • <processname> ist der beliebige Name des Prozesses
  • <wscript|cscript> bestimmt den zu verwendenden Scriptinghost
  • <32bit|64bit> gibt an ob die 32Bit- oder 64Bit-Version verwendet werden soll
  • <scriptpath> gibt zum guten Schluss das auszuführenden Script einschl. Pfad und Endung an
  • <arg1...n> enthält evtl. erforderliche Argumente für das auszuführende Script

Und was macht das Script nun eigentlich?
Eigentlich nichts besonderes. Es erstellt lediglich im Temp-Ordner des Benutzers eine Kopie des gewählten Scripting-Host. Diese Kopie bekommt den Namen den man als Prozessname angegeben hat. Mit dieser Kopie wird dann das auszuführende Script ausgeführt.
Danach wird runasprozess.vbs (die ganz original im wscript.exe läuft) beendet.

Ein kleines Beispiel für den Aufruf mit runasprocess.vbs testprozess wscript 32bit c:\temp\test.vbs arg1 arg2 arg2 sieht im Taskmanager dann so aus:

8cb798422aebd5583ccd8c688207e253 - Klicke auf das Bild, um es zu vergrößern

Ich hoffe der eine oder andere kann das Script gebrauchen. Mir wird es auf der Arbeit jedenfalls zukünftig die Arbeit etwas erleichtern.
Mitglied: rubberman
19.07.2012, aktualisiert um 00:56 Uhr
Hallo manuel-r!

Ich finde die Idee interessant, darum gibts 'ne entsprechende Bewertung. Beim Lesen des Titels hatte ich das nämlich beinahe als Scherz aufgefasst

Persönlich werde ich das Script vermutlich nicht nutzen, da das Problem eigentlich einfacher zu lösen ist. Ich lasse im Taskmanager die Befehlszeile mit ausgeben und bekomme so die Zuordnung.
Menü Ansicht > Spalten auswählen ... > Checkbox Befehlszeile

Grüße
rubberman
Bitte warten ..
Mitglied: manuel-r
19.07.2012 um 07:58 Uhr
Ich lasse im Taskmanager die Befehlszeile mit ausgeben und bekomme so die Zuordnung.
Die Option/Spalte gibt es zumindest unter Windows XP aber noch nicht. In Windows 7 ist es drin; bei Vista weiß ich es nicht.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Arbeiten mit INI Files in VBScript
Anleitung von FriemlerBatch & Shell11 Kommentare

In letzter Zeit habe ich hier im Forum des Öfteren Fragen gesehen, wie man aus einer INI-Datei Werte liest ...

Batch & Shell

Rsync mit einen anderen SSH-Port ausführen

Tipp von FrankBatch & Shell1 Kommentar

Benutzt der SSH-Daemon einen anderen Port als 22 muss man für den rsync Befehl den "e"-Parameter anwenden: Bei $portNumber ...

Erkennung und -Abwehr

Code ohne Macros in Word ausführen!

Information von LochkartenstanzerErkennung und -Abwehr1 Kommentar

Wie in beschrieben, bietet Word per DDE die Möglichkeit, fremden Code auch ohne Makros auszuführen. Das sollte bei Sicherheitsmaßnahmen ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

Tipp von tralvellerBatch & Shell6 Kommentare

Vorteile: - Anmeldung von Benutzer nicht notwendig - Kann bei Systemstart direkt ausgeführt werden - Keine Aufgabenplanung notwendig - ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs11 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)10 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...