0

我的应用程序从服务器下载更新。下载后运行 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 版本之间一致地工作吗?

4

1 回答 1

-1

还有很多其他替代方案,其中任何一个都可以从 Windows 95 开始工作:

  • CreateProcess() // 推荐的 Win32 API

  • 外壳执行 ()

  • 系统 ()

于 2012-04-27T18:31:54.003 回答