現在実行中のプロセスを昇格させることは不可能だと思います。私が理解しているように、Windows Vistaには、起動時にプロセスに管理者権限が付与されることが組み込まれています。UACを利用するさまざまなプログラムを見ると、管理アクションを実行する必要があるたびに、実際には個別のプロセスが起動することがわかります(タスクマネージャーが1つ、Paint.NETがもう1つ、後者は実際には.NETアプリケーションです)。 )。
この問題の一般的な解決策は、昇格されたプロセスを起動するときにコマンドライン引数を指定することです(abatishchevの提案はこれを行う1つの方法です)。これにより、起動されたプロセスは特定のダイアログボックスを表示することだけを認識し、このアクションが実行された後に終了します。完了しました。したがって、新しいプロセスが起動されて終了したことにユーザーが気付くことはほとんどなく、同じアプリ内で新しいダイアログボックスが開かれたように見えます(特に、ハッカーがメインウィンドウを作成する場合)昇格されたプロセスは親プロセスの子です)。昇格されたアクセスにUIが必要ない場合は、さらに良いでしょう。
VistaでのUACの詳細については、このテーマに関する記事をよく読んでください(コード例はC ++ですが、C#でほとんどのことを行うにはWinAPIとP / Invokeを使用する必要があると思いますとにかく)。UAC準拠のプログラムを設計することは簡単ではありませんが、少なくとも正しいアプローチが見られることを願っています...