私のアプリケーションは、サーバーから更新をダウンロードします。ダウンロード後、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 のバージョン間で一貫して動作する別のシステム コールを提案したりできますか?