2

プロセスが昇格したUAC権限から標準ユーザーに戻ることは可能ですか?そうでない場合、昇格されたプロセスは標準のユーザートークンを使用してそのコピーを起動し、それから自分自身を強制終了できますか?コード例はありますか(C#を推奨)?

詳細:

問題:-ユーザーが私の製品をインストールします(C#で記述)-インストーラーがUACアクセス許可を管理者に昇格します-最後にインストーラーが私のexeを起動します-exeが管理者から昇格されたアクセス許可を継承します-exeがWindowsエクスプローラーで非表示になるネットワークドライブをマウントします(通常のアクセス許可で実行されます)

私が検討したオプション:1)インストーラーを外部exeと内部exeに分割します。これは、昇格されたアクセス許可で実行されます。インストールは1000行以上のNSISコードで構成されており、NSISについては何も知りません。2)権限の低いドライブをマウントします。これを行うと、Win Explorerはドライブを認識できますが、exeは3)EnableLinkedConnectionレジストリオプションを1に設定できません。インストール中にPCを再起動する必要があるため、これは失敗です。

助けてください!

セルゲイ

4

3 に答える 3

3

一方向: http://www.codeproject.com/KB/vista-security/VistaElevator.aspx

別の方法 (前の記事の最新のコメントで言及): http://brandonlive.com/2008/04/27/getting-the-shell-to-run-an-application-for-you-part-2-how /

于 2010-03-30T18:48:25.033 に答える
1

これをすべての構成で機能させることは不可能です。カイルがリンクしているような醜いハックがありますが、最終的には、権利を下げる実際の方法はありません. あなたがNSISに言及しているので、内部/外部インスタンスのダンスを行うUACと呼ばれるプラグインがたまたまあり、きれいではありませんが機能します。

于 2010-04-03T22:26:26.963 に答える
1

「ハック」の回答で問題ない場合は、NSIS に関する別のブログ投稿で、はるかに単純なアプローチが示されています。explorer.exe別のプロセスを起動するために使用するだけで機能するようです.*

C#はただ

Process.Start("explorer.exe", YourProgram.ExecutablePath)

WaitForExit()エクスプローラーであっても、プログラムはまだ終了していない可能性があることに注意してください。

*コメントの 1 つにも注意してください。それ。"

于 2014-09-10T08:29:56.133 に答える