' *********************
' File:    wsh_info.vbs
' Purpose: Shows in a dialog box the Message string containing the properties of WScript.Network and .Shell objects.
' Author:  Wilson Mar, based on sample Properties.vbs by G. Born
' *********************

Option Explicit
Dim Title, Message, WshShell, objEnv, key1, WshNetwork, text, objArgs, i

' Initialize title:
Title = "Script " & WScript.ScriptName

' Instantiate the WshNetwork object to access network properties:
Set WshNetwork = WScript.CreateObject("WScript.Network")
Message = Message & "--- WScript.Network object properties:" & vbCrLf
Message = Message & ".ComputerName : " & WshNetwork.ComputerName & vbCrLf
Message = Message & ".UserName     : " & WshNetwork.UserName & vbCrLf
Message = Message & ".UserDomain   : " & WshNetwork.UserDomain & vbCrLf

' Instantiate the WScript.Shell COM object:
Set WshShell = CreateObject("WScript.Shell")
Message = Message & "--- WScript.Shell object properties:" & vbCrLf

' Check whether Workgroup entry value exists using WshShell.RegRead method:
key1 = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP\Workgroup"
If (KeyExists(key1) = True) Then
     Message = Message & " Workgroup    : " & WshShell.RegRead(key1)
End If

' Get installation path from Registry:
key1 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\SourcePath"
text = WshShell.RegRead(key1)
Message = Message & " SourcePath from Registry: " & text

' Get collection by using the Environment property:
Set objEnv = WshShell.Environment("Process")
Message = Message & vbCrLf & "--- .Shell Environment Object Process variables:" & vbCrLf 
Message = Message & "OS: " & objEnv("OS") & vbCrLf
If (objEnv("OS")="Windows_NT") Then
    Message = Message & "PROCESSOR_IDENTIFIER: " & objEnv("PROCESSOR_IDENTIFIER") & vbCrLf 
    Message = Message & "PROCESSOR_ARCHITECTURE: " & objEnv("PROCESSOR_ARCHITECTURE") & vbCrLf 
    Message = Message & "PROCESSOR_LEVEL: " & objEnv("PROCESSOR_LEVEL") & vbCrLf 
    Message = Message & "NUMBER_OF_PROCESSORS: " & objEnv("NUMBER_OF_PROCESSORS") & vbCrLf 
End If

Message = Message & "SYSTEMDRIVE: " & objEnv("SYSTEMDRIVE") & vbCrLf
Message = Message & "SYSTEMROOT/WINDIR: " & objEnv("SYSTEMROOT") & vbCrLf
Message = Message & "COMSPEC: " & objEnv("COMSPEC") & vbCrLf 
Message = Message & "TEMP: " & objEnv("TEMP") & vbCrLf
Message = Message & "TMP:   " & objEnv("TMP") & vbCrLf
Message = Message & "PROMPT: " & objEnv("PROMPT") & vbCrLf
'Message = Message & "PATH: " & objEnv("PATH") & vbCrLf 
Message = Message & "PATHEXT: " & objEnv("PATHEXT") & vbCrLf
Message = Message & "HOMEPATH: " & objEnv("HOMEPATH") & vbCrLf

' Show the properties of the WScript object:
Message = Message & "--- Script Host properties:" & vbCrLf
Message = Message & ".Application: " & WScript.Application & vbCrLf
Message = Message & ".Name: " & WScript.Name & " version: " & WScript.Version & vbCrLf
Message = Message & ".FullName: " & WScript.FullName & vbCrLf
Message = Message & ".Path: " & WScript.Path & vbCrLf

' Get script properties:
Message = Message & ".ScriptFullName: " & WScript.ScriptFullName & vbCrLf
Message = Message & ".ScriptName: " & WScript.ScriptName & vbCrLf

If (WScript.Interactive) Then
    Message = Message & ".Interactive: True" & vbCrLf 
Else
    Message = Message & ".Interactive: False" & vbCrLf 
End If

Message = Message & "--- ScriptEngine: " & ScriptEngine() _
	& "  version: " & ScriptEngineMajorVersion() 
Message = Message & "." + CStr(ScriptEngineMinorVersion()) 
Message = Message & " Build: " + CStr(ScriptEngineBuildVersion()) & vbCrLf

' Get the number of arguments:
Set objArgs = WScript.Arguments       ' Create object.
For i = 0 To objArgs.Count - 1        ' Loop through all arguments.
    text = text & objArgs(i) & vbCrLf ' Get argument.
Next 

If (i = 0) Then
    Message = Message & "Arguments: None." & vbCrLf 
Else
    Message = Message & "Arguments: " & text & vbCrLf 
End If

' Issue message:
MsgBox Message, vbInformation + vbOKOnly, Title

'##############################################
' Helper function tests whether the registry key exists:
Function KeyExists(key)
    Dim key2
    On Error Resume Next
    key2 = WshShell.RegRead(key)
    If Err <> 0 Then
        KeyExists = False
    Else
        KeyExists = True
    End If
    On Error GoTo 0
End Function

'*** End
