2012-08-14 8 views
6

ユーザが昇格した管理者として実行されているかどうかを検出する必要があるC#私はsolutionをStevenが提案してみました。ユーザが昇格された特権で実行されているかどうかを、UACポップアップなしで検出できない

5台のマシンで解決策を確認したところ、4台で問題なく動作しました。

ユーザーアカウント制御をAlways notify meに設定しても、UAC通知メッセージを表示しないマシンが1台あります。

そのマシンのコードをチェックすると、run as administratorを選択しても動作せず、IsProcessElevatedのメソッドはfalseを返します。

特定のマシンに問題がありますか?

そのようなプラットフォームでユーザーが昇格しているかどうかを判断する方法はありますか?

+0

マシンにすべての最新のサービスパックなどがあることを確認してから、もう一度お試しください。 –

+0

UACをチェックするいくつかの代替ソリューションがあります[ここ](http://stackoverflow.com/questions/95912/how-can-i-detect-if-my-process-is-running-uac-elevated-or-not )。それらのうちの1つを試して、それが機能するかどうかを確認することは可能ですか? – Default

+1

そのコンピュータには何か問題があり、コードではないように思えます。プロンプトを表示するように明示的に設定すると、UACプロンプトが表示されます。あなたではない。これは、システム自体の問題を指摘しています。 –

答えて

10

の研究の後、私は、Windows 7からと上のユーザーが昇格管理者であるかどうかを判断するために、またはないあなただけの次チェックする必要があることが判明しましたこのオプションが失敗した場合に使用できるトークンをチェックする) いくつかのマシンでコードをテストしたところ、問題なく動作しました。

私のアプリケーションはwin7以上でしか動作しないので、この解決策は私にとっては十分です。

+1

+1素敵な仕事。 OPリンクの質問は、それが非常に誤解を招くようなタイトルを持っていたので、私はそれをスキャンするときにちょっとしたために混乱しました。 –

+0

このコードはWindows 8.1でもうまくいきます。 – codechurn

0

頼むのは愚かかもしれませんが、あなたにUACを変更した後でも常に私に通知するように、マシンを再起動しましたか?

マシンを再起動しない限り、UACのステータスが変更されないため、同じ問題が発生し、Windows自体に問題がありました。

this linkthisも試してください。コードの

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
WindowsPrincipal principal = new WindowsPrincipal(identity); 
return principal.IsInRole (WindowsBuiltInRole.Administrator); 

(残り:

関連する問題