2012-12-10 10 views
5

フォームのOKボタンのUAC機能についてインターネットを介して調査しましたが、情報を取得できませんでした。 UACの実装に関するすべての情報は、管理者特権でアプリケーションを再起動します。OKボタンのユーザーアカウント制御

私が必要とするのは、ユーザーがShieldアイコン付きの[OK]ボタンをクリックすると、ユーザーはWindowsレジストリにユーザー権限を昇格させて保存できますが、再起動したくありません管理者権限を持つアプリケーション

+2

"管理者権限でアプリケーションを再起動する必要はありません。"タフ。プロセストークンは、プロセスの開始時に1回割り当てられます。したがって、最低2つのプロセスが必要です。 –

+0

@DavidHeffernan 2つのプロセスが必要ですが、同じプロセスを再起動するのではなく、別のプロセスを開始することができます。 – Servy

+0

@Servyはい、あなたはそれを行うことができます。私は「私は別のプロセスを開始したくない」という質問から引用を読みました。 –

答えて

7

アプリケーションの再起動(またはヘルパーアプリケーションの起動)は、あなたが行うことです。これは、UAC確認画面を表示させるアプリケーションを起動している間に昇格された権限を要求することです。シールドアイコンを表示する目的は、基本的に確認画面が表示されていることをユーザーに知らせることです。

アプリケーションを再起動する必要はありません。アプリケーションで複数のインスタンスが許可されている場合は、作成するレジストリの変更を示すコマンドラインパラメータを使用して2番目のコピーを起動できます。あるいは、管理作業を行うヘルパーアプリケーションを用意し、必要に応じて起動することもできます。ヘルパーアプリケーションでは、ウィンドウを作成または表示する必要はありません。それは完全にバックグラウンド操作になる可能性があります。

-1

を使用すると、アプリケーションマニフェストを追加し、管理者権限を必要とすべきである場合があります。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <security> 
      <requestedPrivileges> 
       <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> 
      </requestedPrivileges> 
     </security> 
    </trustInfo> 
</assembly> 

編集

アプリケーション全体が昇格した権限で実行されているので、それはここに最善の解決策ではないかもしれないし、セキュリティ上の脆弱性があります。

+2

問題があるのは、アプリケーション全体を条件付きで稀にしか必要としない場合は、特権を昇格して実行することです。それは起こるのを待っているセキュリティの脆弱性です。 – Servy

+0

彼の質問では、昇格された権限でアプリケーション全体を実行したいのかどうかは分かりません。すべてのアプリケーションが最低限の特権を使用する必要がありますが、常に可能なわけではありません! –

+1

もちろん、それは可能ですが、他の答えを見てください。解決策は、昇格された権限を必要とする少数の操作を実行する2番目のバックグラウンドプロセスを開始することです。 – Servy