0

This is just a quick question that I am sure someone will be able to answer quickly as I am most likely just missing something.

Lets say I have the following directory layout

Folder1
  -> CurrentlyRunning.EXE
  -> Folder2
     ProcessToStart.Bat
     ApplicationToStartFromBat.exe

This is the code inside the applications.

CurrentlyRunning.EXE:

        var proc = new Process
            {
                StartInfo =
                    {
                        FileName = "Folder2/ProcessToStart.Bat",
                        WindowStyle = ProcessWindowStyle.Hidden,
                        CreateNoWindow = true,
                        UseShellExecute = false
                    }
            };

        proc.Start();

ProcessToStart.Bat:

START ApplicationToStartFromBat.exe

Now, if I run ProcessToStart.Bat by double clicking on it, it will open ApplicationToStartFromBat.exe with no problems (which is good). If I run CurrentlyRunning.EXE (which will execute the code I posted above) the BAT file fails saying it can't find my EXE (which is really weird).

If I change the BAT file to:

START Folder2/ApplicationToStartFromBat.exe

and then run CurrentlyRunning.EXE, the bat will then properly open ApplicationToStartFromBat.exe. My problem is I can not change the code inside the bat for one reason or another.

Why is proc.Start() causing the bat file search root directory to change, and how do I stop this from happening?

Thanks

Landin Martens
  • 3,283
  • 12
  • 43
  • 61

1 Answers1

1

I think it is to do with where the working directory is for your exe file.

Try using ProcessStartInfo.WorkingDirectory to set the correct directory for your batch file.

var proc = new Process
{
    StartInfo =
    {
        FileName = "Folder2/ProcessToStart.Bat",
        WorkingDirectory = "DirectoryPath";
        WindowStyle = ProcessWindowStyle.Hidden,
        CreateNoWindow = true,
        UseShellExecute = false
    }
};
proc.Start();
Bali C
  • 30,582
  • 35
  • 123
  • 152