2014-01-31 108 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