如何从Windows中的C ++程序执行另一个exe

我想让我的C ++程序在Windows中执行另一个.exe。 我将如何做到这一点? 我正在使用Visual C ++ 2010。

这是我的代码

#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { unsigned int input; cout << "Enter 1 to execute program." << endl; cin >> input; if(input == 1) /*execute program here*/; return 0; } 

你可以使用system功能

 int result = system("C:\\Program Files\\Program.exe"); 

使用CreateProcess()函数。

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx

这是我以前在寻找答案时找到的解决方案。
它指出,你应该总是避免使用system(),因为:

  • 这是资源沉重
  • 它打败了安全 – 你不知道你是一个有效的命令还是在每个系统上都做同样的事情,你甚至可以启动你不打算启动的程序。 危险在于,当你直接执行一个程序时,它会获得与你的程序相同的权限 – 也就是说,例如,如果你以系统管理员身份运行,那么你不经意间执行的恶意程序也以系统管理员身份运行。
  • 反病毒程序讨厌它,你的程序可能被标记为病毒。

相反,可以使用CreateProcess()。
Createprocess()用于启动一个.exe并为其创建一个新的进程。 应用程序将独立于调用应用程序运行。

 #include <Windows.h> void startup(LPCSTR lpApplicationName) { // additional information STARTUPINFOA si; PROCESS_INFORMATION pi; // set the size of the structures ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); // start the program up CreateProcessA ( lpApplicationName, // the path argv[1], // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE CREATE_NEW_CONSOLE, // Opens file in a separate console NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi // Pointer to PROCESS_INFORMATION structure ); // Close process and thread handles. CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } 

您可以使用system拨打电话

 system("./some_command")