0

私のアプリケーションは、サーバーから更新をダウンロードします。ダウンロード後、updater.exe (管理者権限で実行するように設定されています) が実行されるため、更新プログラム foo.exe をアプリケーションにコピーできます。実行中はファイルを置き換えることができないため、ヘルパー アプリケーションが必要です。

それを実行するために、次のシステム コールを作成しています。

パラメータには以下が含まれていました。

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 が返されます。また、最初のパラメーターを無駄に引用しようとしました。古い _execl が Windows 7 でサポートされていないのではないかと疑って、すべてのパラメーターを調整して _wexecl を呼び出してみましたが、動作に変化はありませんでした。

私が行っている呼び出しの修正を提案したり、Windows のバージョン間で一貫して動作する別のシステム コールを提案したりできますか?

4

1 に答える 1

-1

他にもたくさんの代替手段があり、どれも Windows 95 以降で動作します:

  • CreateProcess() // 推奨される Win32 API

  • ShellExecute ()

  • システム ()

于 2012-04-27T18:31:54.003 に答える