Option Explicit Const WINDOW_NORMAL = 1 Dim shell, fileSystem, processEnvironment Dim profileRoot, nxRoot, roamingAppData, localAppData, tempDirectory Dim installDirectory, executablePath, requiredDirectories Dim index, launchResult, errorNumber, errorText Dim arguments, argumentCount, launchCommand, launchMode, launchFile Set shell = CreateObject("WScript.Shell") Set fileSystem = CreateObject("Scripting.FileSystemObject") Set arguments = WScript.Arguments profileRoot = "C:\Users\Public\Documents\NoMachineProfile" nxRoot = profileRoot & "\.nx" roamingAppData = profileRoot & "\AppData\Roaming" localAppData = profileRoot & "\AppData\Local" tempDirectory = localAppData & "\Temp" installDirectory = "C:\Program Files\NoMachine" executablePath = installDirectory & "\bin\nxplayer.exe" requiredDirectories = Array( _ profileRoot, _ nxRoot, _ nxRoot & "\config", _ nxRoot & "\cache", _ nxRoot & "\temp", _ nxRoot & "\devices", _ profileRoot & "\AppData", _ roamingAppData, _ localAppData, _ tempDirectory, _ profileRoot & "\AppData\LocalLow", _ profileRoot & "\Logs", _ profileRoot & "\Recordings", _ profileRoot & "\Sessions", _ profileRoot & "\Transfers" _ ) On Error Resume Next For index = 0 To UBound(requiredDirectories) If Not fileSystem.FolderExists(requiredDirectories(index)) Then fileSystem.CreateFolder requiredDirectories(index) End If If Err.Number <> 0 Then errorText = "Cannot create the NoMachine profile directory:" & vbCrLf & _ requiredDirectories(index) & vbCrLf & Err.Description Err.Clear On Error GoTo 0 MsgBox errorText, vbCritical, "NoMachine Launcher" WScript.Quit 2 End If Next On Error GoTo 0 If Not fileSystem.FileExists(executablePath) Then MsgBox "NoMachine executable not found:" & vbCrLf & executablePath, _ vbCritical, "NoMachine Launcher" WScript.Quit 3 End If If Not fileSystem.FileExists(nxRoot & "\config\player.cfg") Then MsgBox "NoMachine configuration not found:" & vbCrLf & _ nxRoot & "\config\player.cfg", vbCritical, "NoMachine Launcher" WScript.Quit 4 End If argumentCount = arguments.Count launchCommand = Chr(34) & executablePath & Chr(34) If argumentCount = 2 Then launchMode = LCase(arguments(0)) launchFile = arguments(1) If launchMode <> "--session" And launchMode <> "--recording" Then MsgBox "Unsupported NoMachine launch mode: " & launchMode, _ vbCritical, "NoMachine Launcher" WScript.Quit 6 End If If InStr(launchFile, Chr(34)) > 0 Or Not fileSystem.FileExists(launchFile) Then MsgBox "NoMachine input file not found or invalid:" & vbCrLf & launchFile, _ vbCritical, "NoMachine Launcher" WScript.Quit 7 End If launchCommand = launchCommand & " " & launchMode & " " & _ Chr(34) & launchFile & Chr(34) ElseIf argumentCount <> 0 Then MsgBox "Unsupported NoMachine launcher arguments.", _ vbCritical, "NoMachine Launcher" WScript.Quit 8 End If Set processEnvironment = shell.Environment("PROCESS") processEnvironment("HOME") = profileRoot processEnvironment("USERPROFILE") = profileRoot processEnvironment("HOMEDRIVE") = "C:" processEnvironment("HOMEPATH") = "\Users\Public\Documents\NoMachineProfile" processEnvironment("APPDATA") = roamingAppData processEnvironment("LOCALAPPDATA") = localAppData processEnvironment("TEMP") = tempDirectory processEnvironment("TMP") = tempDirectory processEnvironment("NX_HOME") = profileRoot processEnvironment("NX_CONFIG") = nxRoot processEnvironment("NX_ROOT") = nxRoot processEnvironment("NX_TEMP") = nxRoot & "\temp" processEnvironment("NX_SYSTEM") = installDirectory shell.CurrentDirectory = installDirectory & "\bin" On Error Resume Next launchResult = shell.Run(launchCommand, WINDOW_NORMAL, False) errorNumber = Err.Number errorText = Err.Description On Error GoTo 0 If errorNumber <> 0 Then MsgBox "NoMachine could not be started." & vbCrLf & errorText, _ vbCritical, "NoMachine Launcher" WScript.Quit 5 End If WScript.Quit 0