3

ボタンをクリックした後に管理者権限が必要なプロジェクトに取り組んでいます。現在C#VB.NETを使用しています。あなたの答えの言語はあなた次第ですが、それがそれらの1つである場合はより良い. :)

私はすでに次のことを試しました:

  • 「runas」動詞を新しいプロセスで実行しますが、問題はアプリケーションを再起動することです。これは、現在の進行状況と変数値がすべて失われることを意味します。
  • マニフェストファイルを編集していますが、ユーザーにアプリケーションを管理者として実行することを「強制したくありません」 。

前述のように、管理者権限はボタンをクリックする場合にのみ必要です。クリックされていない場合は、権利は必要ありません。

したがって、たとえば、実行時に UAC を介して管理者権限を付与する方法はありますか。アプリケーションを再起動せずに。

私はウェブを検索しましたが、私が得たのはすでに上で述べた方法だけでした:)

注:アプリケーションの新しいインスタンスを起動せずに管理者権限を付与できるMicrosoft Security Essentialで必要なものに似たものを見つけました。

MSEならできる! 説明: MSEを実行すると、デフォルトで、 [履歴] タブ最初のラジオ ボックスが選択されていることがわかります。これを他のオプションに変更して権限を付与しても、アプリケーションは再起動され、現在の状態が維持されます。

どんな助けでも大歓迎です。

4

1 に答える 1

11

プロセスの存続期間中に昇格する方法はありません。プロセスが昇格して実行されるかどうかは、プロセスの起動時に決定されます。

アプリケーションの新しいインスタンスを起動せずに管理者権限を付与できる Microsoft Security Essential で必要なものに似たものを見つけました。

いいえ、MSE は昇格されたタスクを別のプロセスで実行します。

既存のプロセスを閉じて、新しいプロセスを開始する必要はありません。あなたが期待されているのは、別のプロセスを使用して、昇格が必要なタスクだけを実行することです。その別のプロセスでは、UI を表示する必要はありません。昇格したプロセスは非表示のままにして、UI を表示するプロセスと通信できます。これを実現する最もクリーンな方法は、昇格されたタスクをアウトプロセス COM サーバー内に配置し、CoCreateInstanceAsAdmin.

于 2013-09-17T14:34:09.540 に答える