2012-07-25 15 views
43

Olası Çoğalt: (os Windows XP/Vista/7 C# ile yazılmış çalışan)
Check if the current user is administratorC# Kontrol eğer

Başvuru olmadığını test etmek gerek

çalıştıran yönetici olarak (sağdaki .exe gibi -> Yönetici olarak Çalıştır veya Özellikler'in altındaki Tamamlama sekmesinde Yönetici olarak çalıştır).

StackOverflow'ta googled ve arama yaptım ancak çalışma çözümü bulamıyorum.

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

bu bir UAC şey midir? Yani kullanıcı zaten yönetici, ancak UAC altında uygulamanın yükselip yükseltilmediğini öğrenmek ister misiniz? – spender

+2

Yinelenen değil. Bu soru, oturum açmış kullanıcı hakkında değil, işlem hakkında sorar. –

cevap

79

Bu işlevsel sizin koduyla aynı görünüyor, ama yukarıda

... benim için çalışıyor yapıyor bu

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

deneyin:

Benim son girişimi bu oldu işlevsel olarak, (gereksiz geçici değişkenler olmadan) ...

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

veya kullanarak ifade gövdeli özelliği:

public static bool IsAdministrator => 
    new WindowsPrincipal(WindowsIdentity.GetCurrent())) 
     .IsInRole(WindowsBuiltInRole.Administrator); 
+13

"System.Security.Principal; kullanarak" eklediğinizden emin olun. – LightLabyrinth

+0

Windows 10'da benim için çalıştım. – Alexander

+0

Bir kullanma ifadesine sarmanız gerekiyor: "using (var identity = WindowsIdentity.GetCurrent())" – zezba9000