2011-05-10 17 views
25
kontrol et

Bazı benzer sorular olduğunu biliyorum. Ama sadece bir şey kontrol etmek istiyorum.C# yönetici ayrıcalığı -

Sadece programın yönetici olarak çalışıp çalışmadığını bilmek istiyorum. Bunu kontrol etmek istiyorum çünkü bazı güvenli dosyaları düzenlemek istiyorum. Kullanıcının yönetici olması gerekmez. Uygulamamın yalnızca Yönetici olarak çalışırken düzenlenebilir bazı güvenli dosyaları düzenleme hakları olup olmadığını bilmek istiyorum.

+2

olası yinelenen Yönetici olarak?] (Http://stackoverflow.com/questions/509292/how-can-i-tell-if-my-process-is-running-as-administrator) –

+1

Sadece bu soruyu yönettim ve sanki 3 yıl önce sordu. Bilmek güzel. Teşekkürler Google. – Hooch

cevap

55

Bu geçerli bir bool dönecektir

atrljoe cevabı son C# kullanarak bir astar dönüştü @
using System.Security.Principal; 

bool isElevated; 
using (WindowsIdentity identity = WindowsIdentity.GetCurrent()) 
{ 
    WindowsPrincipal principal = new WindowsPrincipal(identity); 
    isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator); 
} 
+0

+1, çünkü bu Linux (Mono) üzerinde bile çalışıyor. Kök/sudo ile çalıştırıldığında size doğruyu verir. Varsayılan kullanıcı olarak yanlış verir. – MrPixelDream

+0

Aynı zamanda “kimliği” olduğu için “kimliği” de atmanız gerektiğini düşünüyorum. – Harry

+0

@Harry Cevabın '' '' 'blok' '' '' '' '' '' '' '' 'sarma '' için düzenlenmeden önce bu yorumu yaptığınızı farz ediyorum. – Manuzor

5

aşağıda açıklanmıştır:

using System.Security.Principal; 

static bool IsElevated => new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator); 
Benim yöntemim çalışıyorsa nasıl anlarım [ait
+5

Bu çirkin. Üzgünüm. Ama gerçekten, her şeyi kısaltmalısın. Onu 4 satır olarak bırakmak ve bunun dışında işlev yapmak bette. Tek bir linerda nasıl hata ayıklanır? – Hooch

+0

Açıklık olduğu sürece, birliğin bir vitrede olduğuna inanıyorum. –

+2

İlginç ... Bunu, genişletilmiş sürümden daha kolay okumak için buluyorum. Bu, net bir çağrı hiyerarşisine sahipken, kodun farklı değişkenlere patladığını anlamak için zihinsel olarak onu çalıştırmam gerekiyor. – bart