我正在使用VS2010,想要调用在另一个目录中创建的exe文件。我尝试了以下方法:
int main(){
system("C:\\Users\\Li\\Desktop\\Debug\\modelExample_4pcs.exe");
return 0;
};
但是我遇到了“系统找不到指定的文件”错误。我尝试从命令行直接运行exe文件,只有当我在其目录内时才能正常工作。请问如何从不同的目录运行它?(我正在使用win7)谢谢,Li。
尝试打开文件以进行阅读,只是为了检查您是否有正确的路径:
char* filename = "C:\\Users\\Li\\Desktop\\Debug\\modelExample_4pcs.exe" ;
FILE* fp = fopen (filename, "rb") ; // Open for reading, binayr mode
if (fp == 0) {
printf ("Duh! File not found\n") ;
exit (0) ;
}
printf ("File found\n") ;
fclose (fp) ;
// Now try the system call, as before:
system(filename);
发生了什么?
HINSTANCE hinst = ShellExecute( NULL, _T("open"), commandLine.c_str(), additionalParams.c_str(), NULL, SW_RESTORE );
if(hinst <= (HINSTANCE)SHELLEXERROR)// see: http://msdn2.microsoft.com/en-us/library/bb762153.aspx for further info on the return values
现在假设你正在使用Win7,你可能会遇到权限问题,需要以提升的权限(即管理员)运行,你可以通过以管理员身份打开cmd并从另一个目录运行exe来测试。
正如Steve上面提到的,你当然可以使用CreateProcess。
希望对你有所帮助,
EB
System()可能无法找到cmd.exe来打开您的环境。 尝试使用cmd.exe通过/C选项来执行您的应用程序。
System("C:\\WINDOWS\\system32\cmd.exe /C \"C:\\Users\\Li\\Desktop\\Debug\\modelExample_4pcs.exe\"");
尝试使用CreateProcess。它与使用system()相比具有较少(或至少是不同的)环境依赖关系。如果仍然失败,至少您将获得漂亮的Win32错误代码。
http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx
请检查您的路径,并确保转义所有字符:C:\\Users\Li..
错误来自于运行主程序,而不是启动modelExample_4pcs.exe吗?尝试注释掉system()调用,看看是否会出现相同的错误。
当您在其文件夹外部时,主程序不在路径上...
首先要切换到目录,就像你在命令提示符下执行的那样:
system("C: && CD \\Users\\Li\\Desktop\\Debug\\ && modelExample_4pcs.exe");
SetCurrentDirectoryA("C:\\Users\\Li\\Desktop\\Debug")
,然هگژو‰§è،Œsystem("modelExample_4pcs.exe")
م€‚请و³¨و„ڈ,system
ه‡½و•°çڑ„ه®çژ°و–¹ه¼ڈه› ç³»ç»ں而ه¼‚م€‚ - dirkgently