2017-12-05 15 views
-1

私のC#アプリケーションの中から* .msiファイルを実行する必要があります。インストールはUIなしで実行され、無人で実行する必要があります。 UACポップアップウィンドウを避ける方法はありますか?Windowsインストーラを起動してUACポップアップを避ける方法はありますか

+1

アプリケーションを管理者として実行する場合、UACはポップアップしないでください。 –

+2

UACプロンプトを回避する一般的な方法があった場合、UACの要点は何ですか? –

+0

これはアップグレードのシナリオですか?最初のインストール時にUACプロンプトを表示しても、アップグレード中にプロンプ​​トが表示されない場合は十分でしょうか? –

答えて

1

1)インストールは、アプリとSYSTEMとして実行されているWindowsサービスを産みます。

2)アプリケーションは、新しいバージョンのwebserviceをチェックし、一時ディレクトリにダウンロードします。

3)アプリケーションは、MSIが一時ディレクトリに存在することをサービスに通知します。

4)サービス)

5(公開/割り当て)します。msiexec/JM foo.msi/QNを実行することにより、MSIの "祝福" サービスは、MSIは、現在信頼されたアプリケーションを通知します。

6)アプリケーションは、UACプロンプトなしでMSIのインストールを実行します。 msiexec/i foo.msi/qn RESTARTAPP = 1

このパターンでは、カスタムアクションスケジューリング/セキュリティサンドボックスという点でMSIが完全に準拠している必要があります。 MSIを立ち上げるとすぐにアプリケーションは終了し、RESTARTAPPでカスタムアクションを実行してアプリケーションを再起動して、シームレスなユーザーエクスペリエンスを実現するように指示します。

私はこれをFOSSプロジェクト/パターンにすることを考えましたが、悪用されないようにするためのセキュリティ上の考慮事項は、私が対処したいことを超えています。

1

UACプロンプトをC#ランチャに延期することができますが、どこかに高度プロンプトが表示されている必要があります。開始され、UACの標高を取得し、MSIのインストールをCreateProcess()の開始(またはMsiInstallProductの呼び出し)として開始すると、MSIも上昇します。私はのようなものでしたソリューション作成した過去には

関連する問題