68

重複の可能性:
現在のユーザーが管理者であるかどうかを確認します

アプリケーション(C#で記述され、Windows XP / Vista / 7を実行)が管理者として実行されているかどうかをテストする必要があります([.exe]-> [管理者として実行]、または[プロパティ]の[互換性]タブで[管理者として実行]を右クリックします)。 。

StackOverflowをグーグルで検索しましたが、有効な解決策が見つかりません。

私の最後の試みはこれでした:

if ((new WindowsPrincipal(WindowsIdentity.GetCurrent()))
         .IsInRole(WindowsBuiltInRole.Administrator))
{
    ...
}
4

1 に答える 1

153

これを試して

public static bool IsAdministrator()
{
    var identity = WindowsIdentity.GetCurrent();
    var principal = new WindowsPrincipal(identity);
    return principal.IsInRole(WindowsBuiltInRole.Administrator);
}

これは機能的にはあなたのコードと同じように見えますが、上記は私にとってはうまくいっています...

機能的に(不要な一時変数なしで)...

public static bool IsAdministrator()
{
   return (new WindowsPrincipal(WindowsIdentity.GetCurrent()))
             .IsInRole(WindowsBuiltInRole.Administrator);
}  

または、式本体のプロパティを使用して:

public static bool IsAdministrator =>
   new WindowsPrincipal(WindowsIdentity.GetCurrent())
       .IsInRole(WindowsBuiltInRole.Administrator);
于 2012-07-25T23:27:51.143 に答える