调用winexec函数时,第一个参数用*.exe+filename 调用,结果*.exe打不开filename ,但是用*.exe的打开菜单却可以打开filename,请问这是为什么,谢谢

解决方案 »

  1.   

    The executable name is treated as the first white space-delimited string in lpCmdLine. If the executable or path name has a space in it, there is a risk that a different executable could be run because of the way the function parses spaces. The following example is dangerous because the function will attempt to run "Program.exe", if it exists, instead of "MyApp.exe". WinExec("C:\Program Files\MyApp", ...) 
    If a malicious user were to create an application called "Program.exe" on a system, any program that incorrectly calls WinExec using the Program Files directory will run this application instead of the intended application. To avoid this problem, use CreateProcess rather than WinExec. However, if you must use WinExec for legacy reasons, make sure the application name is enclosed in quotation s as shown in the example below.WinExec("\"C:\Program Files\MyApp.exe\" -L -S", ...)