Есть ли альтернатива процессу в .NET для запуска команд в командной строке? - PullRequest
0 голосов
/ 29 сентября 2010

В мой предыдущий вопрос Я подробно описал проблему, с которой столкнулся.

Одним из решений является симуляция пользователя, набирающего команду в командной строке. Я не знаю, как это сделать в .NET, поскольку обычный способ сделать это - использовать System.Diagnostics.Process, который вызывает ошибку.

Интересно, есть ли альтернатива этому классу? В чем разница между использованием этого класса и вводом команды в качестве пользователя?

Ответы [ 4 ]

2 голосов
/ 29 сентября 2010

Не уверен, что это как-то связано с командной строкой. Однако вы получаете то же поведение, что и в командной строке, используя тот же интерпретатор командной строки. Используйте cmd.exe в качестве имени файла процесса, / c powercfg.exe в качестве аргумента.

1 голос
/ 29 сентября 2010

Не то, чтобы я знал.

Если это так, то, похоже, это не решит вашу проблему (ваша проблема в том, что запускаемая программа имеет разные переменные окружения при программном запуске и при ручном запуске).

0 голосов
/ 29 сентября 2010

Почему бы не вызвать exe через командную строку:

using (var process = new Process
{
    StartInfo = new ProcessStartInfo
    {
         FileName = "cmd.exe",
         Arguments = "/C powercfg.exe",
         RedirectStandardOutput = true,
         UseShellExecute = false,
    }
})
{
    process.Start();
    process.WaitForExit();
}

Это немного необычно, но должно работать ....

0 голосов
/ 29 сентября 2010

Похоже, что DLL загружается динамически во время выполнения. Вы можете найти переменную PATH в командной строке, а затем установить ее с помощью «control panel \ system \ advance \? Environment?» или вызовите setEnv, или какой-либо другой API (думаю, мне, возможно, пришлось бы вызвать вызов win32, когда я делал это в последний раз), чтобы изменить переменную среды в вашем коде.

Помните, что при работе с системными EnvVars они читаются только при первом запуске, поэтому обычно вы должны перезапускать приложения для получения новых настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...