1

I need to spawn processes from my C# program, but in some cases full path to an executable can be more then 256 characters.

I have studied several related topics on this site, as well as this article @MSDN. According to that information this should be possible by using \\?\ prefix, but I still couldn't make it work. It looks like system tries to start the process, but fails. I am getting "SmartScreen has stopped working" message instead.

Am I missing something? Here is my code:

private void button2_Click(object sender, EventArgs e)
{
    ProcessStartInfo start = new ProcessStartInfo();
    start.Arguments = "";
    start.FileName = @"\\?\c:\11111111111111111111111111111111111111111111\222222222222222222222222222222222222222222222\3333333333333333333333333333333333333333333333\444444444444444444444444444444444444444444444\5555555555555555555555555555555555555555555555\6666666666666666666666666666666666666666666666\test.exe";
    start.WindowStyle = ProcessWindowStyle.Normal;
    start.CreateNoWindow = true;
    int exitCode;
    using (Process proc = Process.Start(start))
    {
        proc.WaitForExit();
        exitCode = proc.ExitCode;
        MessageBox.Show(String.Format("Exit code: {0}", exitCode));
    }
}

I am running this on Windows 10, version 1703 (OS Build 15063.1387).

Rui Jarimba
  • 11,166
  • 11
  • 56
  • 86
AndyH
  • 383
  • 1
  • 8

0 Answers0