Для запуска на стороне сервера различных консольных exe написал такую функцию (для DAX2009) в классе WinAPIServer.
Позволяет также управлять временем ожидания выполнения приложения.
Возвращает результат (успешное / не успешное завершение)
X++:
static server boolean shellExecuteWait(str _commandLine, str _arguments = "", int _waitTime = -1)
{
System.Diagnostics.Process process;
System.Diagnostics.ProcessStartInfo startInfo;
InteropPermission permission = new InteropPermission(InteropKind::ClrInterop);
System.Exception exception;
Boolean exited;
;
permission.assert();
startInfo = new System.Diagnostics.ProcessStartInfo(_commandLine);
process = new System.Diagnostics.Process();
if (_arguments)
{
startInfo.set_Arguments(_arguments);
}
try
{
startInfo.set_UseShellExecute(false); // для отключения диалога безопасности доступа к сетевым файлам
process.set_StartInfo(startInfo);
process.Start();
process.WaitForExit(_waitTime);
exited = process.get_HasExited();
if (exited == false)
{
process.Kill();
return false;
}
return true;
}
catch (Exception::CLRError)
{
exception = CLRInterop::getLastException();
while (exception)
{
error(exception.get_Message());
exception = exception.get_InnerException();
}
return false;
}
}