Окно «Выполнить» имитации Windows в .NET - PullRequest
1 голос
/ 20 мая 2010

Я хотел бы имитировать команду «Выполнить» в Windows в моей программе. Другими словами, я хотел бы дать пользователю возможность «запускать» произвольный фрагмент текста в точности так, как это было бы, если бы он набрал его в поле выполнения.

Хотя System.Diagnostics.Process.Start() приближает меня, я не могу заставить работать некоторые переменные окружения, такие как% AppData%. Я просто продолжаю получать сообщение «Windows не может найти«% AppData% »...»

Ответы [ 2 ]

4 голосов
/ 20 мая 2010

Вы можете использовать метод Environment.ExpandEnvironmentVariables , чтобы превратить% AppData% во все, что ему действительно соответствует.

1 голос
/ 20 мая 2010

В зависимости от того, что вы пытаетесь сделать, вы также можете вызвать CMD.EXE, который автоматически расширит ваши переменные окружения. Пример ниже создаст DIR вашей папки% appdata% и перенаправит stdOut к отладке:

        StreamReader stdOut;

        Process proc1 = new Process();
        ProcessStartInfo psi = new ProcessStartInfo("CMD.EXE", "/C dir %appdata%");
        psi.RedirectStandardOutput = true;
        psi.UseShellExecute = false;
        proc1.StartInfo = psi;
        proc1.Start();
        stdOut = proc1.StandardOutput;

        System.Diagnostics.Debug.Write(stdOut.ReadToEnd());
...