Hallo liebe VBS Programmierer,
für alle die etwas mehr WSH-Sicherheit möchten, habe ich mal ein kleines VB Skript geschrieben!
Gruß
Tom Del Greco
Code:
'___________________________________________
'
' WSH Signed Scripts
' Create for Windows 2000/XP/2003
'
' from Tom Del Greco 15.12.07
' last change:
'
'___________________________________________
'
' Mit dieses kleinen Skripte koennen die Ausführ-
' eigenschaften von VB-Skripten auf einen
' Windows 2000/2003/XP gesteuert werden.
' ACHTUNG : Wenn das Argument "/cert" ausgeführt
' wird, können keine Skripte ausgeführt werden
' die kein Zertifikat vom Betriebsystem erhalten
' haben. Sollte es dennoch vorkommen das man diese
' Option, ohne Zertifikat ausgeführt hat, kann man
' den Registry DWORD Einträge von Hand wieder auf
' NULL (0) zurück setzen!
On Error Resume Next
Function WSHSec(DWORD_Value)
' dwValue 0 /runall Alle Skripte werden ausgefuehrt.
'
' dwValue 1 /usermode Der Benutzer entscheidet, ob unsignierte
' Skripte ausgefuehrt werden sollen.
'
' dwValue 2 /cert Nur signierte Skripte werden ausgefuehrt.
'
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows Script Host\Settings"
strDWORD = "TrustPolicy"
strString = "UseWINSAFER"
String_Value = "0"
'HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strDWORD,DWORD_Value
oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strString,String_Value
'HKCU\SOFTWARE\Microsoft\Windows Script Host\Settings
oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strDWORD,DWORD_Value
End Function
Sub strRunAll
Dim Answer
Set objShell=WScript.CreateObject("WScript.Shell")
Answer = objShell.Popup("WSH Sicherheit deaktivieren?",1+64,"Warnung",1+64)
If Answer = vbOk Then
CALL WSHSec(0)
End If
End Sub
Sub strCert
Dim Answer
Set objShell=WScript.CreateObject("WScript.Shell")
Answer = objShell.Popup("Alle VB-Skript koennen nur noch mit einen gueltigen " & vbCrLf & _
"Zertifikat ausgefuehrt werden, wollen Sie diese" & vbCrLf & _
"Einstellung in der Registry wirklich uebernehmen?" ,1+64,"Warnung",1+64)
If Answer = vbOk Then
CALL WSHSec(2)
End If
End Sub
Sub Help
WScript.Echo ""
WScript.Echo " Create by Tom Del Greco '2007"
WScript.Echo ""
WScript.Echo " vcert.vbs [/?] [/cert] [/usermode] [/runall]"
WScript.Echo ""
WScript.Echo " /? - Help"
WScript.Echo " /cert - WSH-Skripte werden nur mit einen gültigen Zertifikat ausgeführt!"
WScript.Echo " /usermode - Der Benutzer wird aufgefordert ob WSH-Skripte ausgeführt werden!"
WScript.Echo " /runall - Alle WSH-Skripte werden ohne Aufforderung ausgeführt!"
WScript.Echo ""
WScript.Quit
End Sub
iNumber = Wscript.Arguments.Count
If (WScript.Arguments.Count -1) OR (WScript.Arguments.Count > 1) Then
CALL Help
End If
If (WScript.Arguments.Named.Exists("?")) AND iNumber = 1 Then
CALL Help
End If
If (WScript.Arguments.Named.Exists("cert")) AND iNumber = 1 Then
CALL strCert
WScript.Quit
End If
If (WScript.Arguments.Named.Exists("usermode")) AND iNumber = 1 Then
CALL WSHSec(1)
WScript.Quit
End If
If (WScript.Arguments.Named.Exists("runall")) AND iNumber = 1 Then
Call strRunAll
WScript.Quit
End If
On Error Goto 0