Lot's of problems. Well, first, your catch block is swallowing the actual exception. DO NOT DO THAT! You're hiding what the code is complaining about. Report the actual exception:
catch (Exception ex)
{
MessageBox.Show(ex.Message);
Close();
}
Next, when you launch your process you're not waiting for it to complete properly. All you're doing is looping, waiting for a filename to show up, but that does NOT mean the file is a valid image file when the filename shows up. The process you launched may not have completed writing the file before you try to read it. That's probably where the exception is coming from.
Call .WaitForExit() on the process you launched instead of using a bad looping method to look for a result file.
...
process.StartInfo.FileName = "CMD.exe";
process.StartInfo.Arguments = cmdCommand;
process.Start();
process.WaitForExit();
process.Dispose();
Image image = Image.FromFile(path);
pictureBox1.Image = new Bitmap(image);
In your code, you're calling image.Dispose() right after you assign the image to the PictureBox. YOU CANNOT DO THAT! That destroys the image object and even the PictureBox cannot display it after that.
The technique you're using to create the image object is also flawed. It will hold the image file locked open for the entire life of the image object. The fix is easy, open the image file as a stream, read it, then close the file:
Bitmap image;
using (FileStream stream = new FileStream(path), FileMode.Open, FileAccess.Read)
{
image = Image.FromStream(stream);
picturebox1.Image = image;
}