2014-01-31 4 views
0

Я хочу выполнить команду из приложения C++. Я делаю это с использованием:Запуск системной команды из приложения C++ отличается от командной строки

system("sendEmail.exe -f [email protected] -t ..."); 

Это работает на Windows Server 2008, а также на других системах. Однако он не работает на моем новом сервере (Windows Server 2012), он, кажется, вызывает команду, но никогда не завершается. Если я ввожу ту же самую команду в командном окне, она работает нормально.

Я попытался с помощью

system("cmd.exe /C \"sendEmail.exe -f [email protected] -t ...\""); 

, но это не помогло.

У кого-нибудь есть идея, в чем разница между вызовом из C++ с системой и запуском в cmd?

Редактировать: Проблема уже не воспроизводима. Спасибо за быстрые ответы

+0

Это больше похоже на работу сценариев. – legends2k

+1

Возможно, он выполнен в разных пользовательских контекстах. – mindo

+3

Разная среда (Путь)? –

ответ

3

Попробуйте с

system("cmd.exe"); 

без параметров Это будет просто открыть окно CMD и оставить его открытым. Из этого окна вы можете позвонить sendMail.exe и посмотреть, что происходит. Возможно, существует только другой путь или разрешение.

В качестве альтернативы вы можете использовать функцию Windows API CreateProcess

+0

Это должно помочь вам - скорее всего, Windows UAC дает вам проблемы. – Elemental

+0

Я пробовал CreateProcess, это тоже не сработало. – lyron

+0

Что возвращает CreateProcess()? Если false, что возвращает GetLastError()? Пробовал ли вы систему ("cmd.exe") и вызывать свою программу вручную из этого окна? Что случилось? – sb9

Смежные вопросы