commit 10d4784c330c409026d00a3880775f1ef8a55c6b Author: youbin Date: Sat Aug 15 15:46:05 2026 +0800 上传文件至「/」 diff --git a/Start-NoMachine.vbs b/Start-NoMachine.vbs new file mode 100644 index 0000000..f84f82a --- /dev/null +++ b/Start-NoMachine.vbs @@ -0,0 +1,126 @@ +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