This won't even compile:
Process.Start("Folder1\bin\debug\app1.exe");
must be
Process.Start(@"Folder1\bin\debug\app1.exe");
This is not so nice of you. Did you type manually? What is broken on your system, "Copy" or "Paste"? :-)
Also, there are no situations where hard-coded path name can be useful. You always need to calculate the path during run-time. In this case, you need a directory if your executables. This is a reliable method of finding it:
string exePath =
System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetEntryAssembly().Location);
There are other methods, but some of them require different libraries (like
Forms
) or depend on how application is hosted. This one is very universal. This is a location of the main executable module of the entry assembly of the application.
Also, you should never assume that your application working directory is the same, so you can use simple file name. The thing is: any user can start any application from any directory. Any at all. And this directory will be the working one, not the same as the executable directory. So, your work-around is absolutely not reliable.
If you have other problems, they are due to the problems in your application you launch in a child process, not yours.
—SA