28 lines
956 B
C#
28 lines
956 B
C#
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
|
|
namespace io.github.hatayama.uLoopMCP
|
|
{
|
|
public static class ProcessStartHelper
|
|
{
|
|
// NativeErrorCode 2 (ERROR_FILE_NOT_FOUND) and 3 (ERROR_PATH_NOT_FOUND) on Windows
|
|
// map to ENOENT on POSIX; other Win32Exception causes (e.g. permission denied) should
|
|
// propagate so callers fail fast instead of silently treating them as "not installed".
|
|
private const int ERROR_FILE_NOT_FOUND = 2;
|
|
private const int ERROR_PATH_NOT_FOUND = 3;
|
|
|
|
public static Process TryStart(ProcessStartInfo startInfo)
|
|
{
|
|
try
|
|
{
|
|
return Process.Start(startInfo);
|
|
}
|
|
catch (Win32Exception ex) when (ex.NativeErrorCode == ERROR_FILE_NOT_FOUND
|
|
|| ex.NativeErrorCode == ERROR_PATH_NOT_FOUND)
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
}
|