BornToBeRoot/NETworkManager · error · Exception
Process could not be started!
Error message
Process could not be started!
What it means
PuTTYControl.Connect() starts the PuTTY executable with Process.Start(info) and embeds its window. Process.Start returns null when the process could not be launched (e.g. the file does not exist or the shell could not execute it), and the control then throws this generic Exception, which is caught and shown in a message box. It signals that no PuTTY process was created, so the session cannot be embedded.
Solutions
- Open Settings > PuTTY (or the session settings) and set the correct full path to putty.exe; verify the file exists at that path.
- Use the bundled PuTTY via Scripts/external or download the official putty.exe and point ApplicationFilePath at it.
- Check antivirus/AppLocker logs to confirm putty.exe is not being blocked from executing.
- Reconnect the tab after fixing the path — the control supports Reconnect() which will retry Connect().
Example fix
// before (caller-side check)
session.ApplicationFilePath = "putty.exe";
// after
var puttyPath = @"C:\Tools\putty.exe";
if (!File.Exists(puttyPath))
throw new FileNotFoundException("putty.exe not found", puttyPath);
session.ApplicationFilePath = puttyPath; 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($"PuTTY executable not found or blocked: {settings.PuTTYPath}", "Error");
} Prevention
- Validate the PuTTY executable path in Settings before opening a PuTTY tab.
- Ship or download putty.exe alongside the app and resolve its path at startup.
- Check antivirus/AppLocker policies on machines where sessions fail to start.
- Surface a settings link in the error dialog so users fix the path quickly.
When it happens
Trigger: Process.Start returns null in Connect() — which happens when the configured ApplicationFilePath (e.g. putty.exe) is missing, invalid, blocked, or cannot be executed on the current system.
Common situations: Portable NETworkManager installs where PuTTY.exe was not downloaded or was moved; an empty or wrong path in the PuTTY application settings; antivirus or AppLocker blocking putty.exe; running on a machine where the bundled/executable path does not resolve.
Related errors
- Process could not be started!
- Embedded resource…
- Embedded resource…
- Specified argument was out of the range of valid values…
AI-assisted analysis of BornToBeRoot/NETworkManager@2780d65469 (2026-09-12).
Data as JSON: /api/errors/841fbe05d2654dc2.
Report an issue: GitHub.
Appendix: source
Thrown at Source/NETworkManager/Controls/PuTTYControl.xaml.cs:222
IsConnected = true;
// Resize after short delay — not applied immediately
await Task.Delay(250);
ResizeEmbeddedWindow();
// Correct DPI if PuTTY started at a different DPI than our panel
var currentPanelDpi = NativeMethods.GetDpiForWindow(WindowHost.Handle);
if (initialWindowDpi != currentPanelDpi)
NativeMethods.TrySendDpiChangedMessage(_appWin, initialWindowDpi, currentPanelDpi);
}
}
}
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)