Copying to the output folder guarantees that the "resource" will have a relative location to your executable. With the method of copying to the output folder, you can use the following code to get the location of your main executable:
String baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
At which point you can use
Path.Combine(baseDir, "myProgram.exe")
to get the final path. If it is in a "tools" folder, you would have to include that in the second argument (that argument is the relative path to your seperate program). The command line arguments go into the ProcessStartInfo object.