BornToBeRoot/NETworkManager · error · Exception

Process could not be started!

Error message

Process could not be started!

What it means

TigerVNCControl.Connect() starts the TigerVNC viewer executable (vncviewer) via Process.Start and embeds its window. If Process.Start returns null — no process was created, typically because the configured ApplicationFilePath is missing or not executable — the control throws this generic Exception and shows the message in a message box.

Solutions

  1. Open Settings > TigerVNC and set the correct full path to vncviewer(.exe); confirm the file exists.
  2. Install TigerVNC or re-download the viewer and update the configured path.
  3. Check whether antivirus/AppLocker blocks the executable and whitelist it.
  4. Reconnect/reopen the VNC tab so Connect() runs again with the fixed path.

Example fix

// before
info.FileName = _sessionInfo.ApplicationFilePath;
// after (guard before constructing the control / calling Connect)
if (!File.Exists(_sessionInfo.ApplicationFilePath))
    MessageBox.Show($"TigerVNC viewer not found: {_sessionInfo.ApplicationFilePath}");
Defensive patterns

Strategy: validation

Validate before calling

var path = sessionInfo.ApplicationFilePath;
bool canStart = !string.IsNullOrWhiteSpace(path) && File.Exists(path);

Type guard

static bool HasExecutable(string path) => !string.IsNullOrWhiteSpace(path) && File.Exists(path) && Path.GetExtension(path).Equals(".exe", StringComparison.OrdinalIgnoreCase);

Try / catch

try
{
    await Connect();
}
catch (Exception ex) when (ex.Message == "Process could not be started!")
{
    MessageBox.Show($"TigerVNC viewer not found: {settings.TigerVNCPath}", "Error");
}

Prevention

When it happens

Trigger: Process.Start(info) returns null in Connect() because the TigerVNC viewer executable path is missing, invalid, or blocked from execution.

Common situations: TigerVNC not installed or its path not configured in Settings > TigerVNC; vncviewer.exe moved/renamed after configuration; antivirus or software restriction policies blocking the viewer; portable deployment missing the external binary.

Related errors


AI-assisted analysis of BornToBeRoot/NETworkManager@2780d65469 (2026-09-12). Data as JSON: /api/errors/617c7409d7ae0954. Report an issue: GitHub.

Appendix: source

Thrown at Source/NETworkManager/Controls/TigerVNCControl.xaml.cs:199

                        // Remove border etc.
                        long style = (int)NativeMethods.GetWindowLong(_appWin, NativeMethods.GWL_STYLE);
                        style &= ~(NativeMethods.WS_CAPTION | NativeMethods.WS_POPUP |
                                   NativeMethods
                                       .WS_THICKFRAME); // NativeMethods.WS_POPUP --> Overflow? (https://github.com/BornToBeRoot/NETworkManager/issues/167)
                        NativeMethods.SetWindowLongPtr(_appWin, NativeMethods.GWL_STYLE, new IntPtr(style));

                        IsConnected = true;

                        // Resize embedded application & refresh
                        // Requires a short delay because it's not applied immediately
                        await Task.Delay(250);
                        ResizeEmbeddedWindow();
                    }
                }
            }
            else
            {
                throw new Exception("Process could not be started!");
            }
        }
        catch (Exception ex)
        {
            if (!_closed)
                // Use built-in message box because we have visual issues in the dragablz window
                MessageBox.Show(ex.Message, Strings.Error, MessageBoxButton.OK, MessageBoxImage.Error);
        }

        IsConnecting = false;
    }

    private void Process_Exited(object sender, EventArgs e)
    {
        // This happens when the user exit the process
        IsConnected = false;
    }

View on GitHub (pinned to 2780d65469)