我的应用程序从服务器下载更新。下载后运行 updater.exe(设置为以管理权限运行),因此它可以将更新 foo.exe 复制到我的应用程序上。由于您无法在运行帮助应用程序时替换文件,因此很有必要。
我正在执行以下系统调用来运行它: result=_execl(updaterexe,updaterstr,updateFilestr,exeFilestr,exeFilestr,NULL);
包含的参数:
c:\program files\foo\updater.exe "c:\program files\foo\updater.exe" "c:\downloads\newfoo.exe" ""c:\program files\foo\foo.exe"
在 vista 下,这按预期工作。在 Windows 7 下,它返回错误代码 22,这是无效参数。我也尝试引用第一个参数无济于事。怀疑 Windows 7 可能不支持旧的 _execl 我尝试调整所有参数并调用 _wexecl 但行为没有改变。
任何人都可以建议对我正在进行的调用进行更正,或者建议一个不同的系统调用,它可以在 Windows 版本之间一致地工作吗?