2011-06-19 6 views
0

私はインストーラを開発しており、管理者だけがアクセス可能なフォルダに書きたいと思います。したがって、私はUACダイアログを表示し、管理者として認証する必要があります。インストーラのGUIから実行する別の実行可能ファイルを用意することでこれを行うことができますが、アプリケーションで必要なときはいつでも認証できる解決策があります。これは.NETで可能ですか?管理者として認証しますか?

+0

UAC ...火星を思い起こさせる –

答えて

3

プロセスが開始されると、特権レベルの中間プロセスを変更することはできません。プロセスが起動すると、その特権レベルで停止します。高い特権で別のプロセスを起動し、IPCと通信してGUIを更新する必要があります。

インストーラを作成している場合、インストール担当者自身のアプリケーションマニフェストを管理者権限としてマークするだけで、管理者権限が必要になるたびに管理者権限を要求します。あなたはManifestファイルに対してこの構成では、新しいプロセスを実行する必要があります

+0

ローカル/ appdataフォルダにもインストールできるようにしたいので、これをやりたくない理由(管理者権限をすぐに要求するなど)が原因です。 – Ryan

+1

その後、GUIなしで2番目のプロセスを生成し、何らかの形式の[IPC](http://msdn.microsoft.com/en-us/library/aa365574%28v=vs.85%29.aspx)を使用する必要があります。 ([WCF](http://msdn.microsoft.com/en-us/library/ms735119%28v=vs.90%29.aspx)パイプを使用する可能性の高い候補者が、アクセス許可を使用して再生する必要がありますあなたが高いプライベートプロセスを持っているときにデフォルトのプライベートプロセスは動作しません)。 –

0

:上昇、新たなプロセスを開始することの代替として

<security> 
    <requestedPrivileges> 
    <requestedExecutionLevel level="requireAdministrator" /> 
    </requestedPrivileges> 
</security> 
0

、あなたは上昇し、新しいCOMオブジェクトを作成することができます。


インストール担当者の中には、実行しようとしているのと同じようなアプローチがあります。この例はfoobar2000 installerです。最初の画面で、それはどこに標準(すべてのユーザー)またはポータブルセットアップを尋ねます。標準が選択されている場合は、標高の入力を促し、再起動します。

あなたの最も簡単な賭けは、ユーザーからデータを収集し、それ自体を実行するか、別の実行可能ファイルを管理者として再起動して、実際のジョブを実行してユーザーの選択でパラメータを渡すことです。

関連する問題