Use ProcessStartInfo.WorkingDirectory in combination with Check if an executable exists in the windows path to determine the path to the executable.
You might need to first check for relative paths, which I think should also handle absolute paths (I have not tested the following code, but it looks ok to me):
string myAppPath = System.Reflection.Assembly.GetEntryAssembly().Location;
if (File.Exists(Path.Combine(myAppPath, pathToExe)))
{
workDir = Path.GetDirectoryName(Path.Combine(myAppPath, pathToExe));
}
else
{
// Use the referenced article to iterate thru System PATH to find the right path
}