2011-11-14 7 views
3

私はC#でWindows 7のログイン画面の背景を変更できるプログラムを作成しました。ユーザーが管理者権限を持っているかどうかを調べるにはどうすればよいですか?

プログラムは、System32フォルダに新しいフォルダを作成し、そこでファイルを移動する必要があります。私は個人的なマシンでこれに問題はありませんが、友人のマシンでそれをテストし、ディレクトリの作成を拒否しました。

彼のアカウントタイプは管理者でしたが、私が考えることができるのは、彼が私のコンピュータで有効にしている何らかの特権を失っていることだけです。

ユーザーのアクセス許可を確認する方法があるかどうかは分かりませんでしたか?またはそれを回る方法。前もって感謝します!その後でWindowsPrincipanのインスタンスを作成

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 

WindowsPrincipal principal = new WindowsPrincipal(identity); 

、最終的には同じようIsInRole()メソッドを使用して、それをチェックし、あなたがこのようWindowsIdentityのオブジェクトを取得することができ、これを検出するため

+0

http://stackoverflow.com/questions/1089046/in-net-c-test-if-user-is-an-administrative-user、http://stackoverflow.com/questions/3600322/check-if - 現在のユーザーの管理者可能な複製の – Burimi

+0

http://www.davidmoore.info/2011/06/20/how-to-check-if-the-current-user-is-an-administrator-even -if-uac-is-on / –

答えて

2

問題はUACです。これは高度を必要とする操作です。ユーザーは管理者グループに属していますが、プロセスには既定で標準のユーザートークンが与えられます。

解決策は、アプリケーションがUAC高度ダイアログを呼び出すようにアプリケーションのマニフェストにrequireAdministratorオプションを追加することです。