すべてのコードを1つのアプリケーションに保持できます。アプリケーションマニフェストは、アプリケーションを昇格して実行するように要求せず、asInvoker
レベルを使用します。
アプリケーションが起動すると、昇格して自身を再起動しようとします。runas
つまり、動詞で別のプロセスを開始します。成功した場合、最初のインスタンスが存在します。
昇格が成功しなかった場合は、機能が制限された状態で実行を継続します。
しかし、ユーザーエクスペリエンスについて考えてみてください。
世界中の誰もが管理者として働いているわけではありません。彼らにとって、昇格はクリックContinue
ボタンのようには見えません。UACは管理者のユーザー名とパスワードを提供するように求めます。
この観点から、Microsoftが推奨するアプローチはうまく機能します。本当に昇格する必要があるまで、通常のユーザーとして実行します。すべての標高ポイントは、UIで明確にマークする必要があります。同じexeファイルを使用して、昇格されていないインスタンスと昇格されたインスタンスを実行できますが、昇格されていないインスタンスがユーザーの要求する操作を実行するためのすべてのデータを提供できるように、通信メカニズムを実装する必要があります。昇格されたインスタンスを開始したら、それを実行し続け、昇格されていないインスタンスを終了できるため、昇格せずに他の操作を実行できます。
したがって、それはより多くの努力を意味しますが、はるかに優れたユーザーエクスペリエンスです。