2008-09-09 9 views

cevap

2

Ben .Net bilmem ama win32, kolay yolu() IsUserAnAdmin aramak. Daha fazla kontrol gerekiyorsa, belirteç sürecini açmak ve

Edit kontrol etmeniz gerekir her grup için CheckTokenMembership ile kontrol edebilirsiniz:

1

Sen ben bu cevabı yaptığı gruplar gibi döngü olabilir:

Determining members of local groups via C#

biraz daha okuduktan sonra kolay şey System.DirectoryServices.AccountManagement ad kullanmak olacaktır.

http://www.leastprivilege.com/SystemDirectoryServicesAccountManagement.aspx

Numune: Burada nasıl kullanılabileceğini olduğu

public static bool IsUserInGroup(string username, string groupname, ContextType type) 
{ 
    PrincipalContext context = new PrincipalContext(type); 

    UserPrincipal user = UserPrincipal.FindByIdentity(
     context, 
     IdentityType.SamAccountName, 
     username); 
    GroupPrincipal group = GroupPrincipal.FindByIdentity(
     context, groupname); 

    return user.IsMemberOf(group); 
} 
+0

System.DirectoryServices.AccountManagement ad alanı .NET 3.5 için yeni, değil mi? –

+0

Bağlantılı makaledeki ilk cümle: "Yeni SystemsystemServices.AccountManagement" adında yeni bir derlemeden tökezlediğim yeni 3.5 şeyden bazılarını inceledim - dikkatimi çekti. " – Espo

+0

Üzgünüz, onu özledim. Tamamlamak için cevabınıza CheckTokenMembership bilgilerini ekleyebilir misiniz (böylece kabul edilen yanıt olarak işaretleyebilirim)? –

2

bir Win32 yoktur NET örnek kod için pinvoke.net (teşekkürler chopeen) Bkz Bunun için API P/Invoke olabilir: IsUserAnAdmin

Sorun, Vista'da daha karmaşık ... bu blog post bakın. Eğer, değil ise o zaman o anda çalışan kullanıcı hakkında

using System.Security.Principal; 

WindowsIdentity identity = WindowsIdentity.GetCurrent(); 
WindowsPrincipal wp = new WindowsPrincipal(identity); 

if (wp.IsInRole("BUILTIN\Administrators")) 
    // Is Administrator 
else 
    // Is Not 

söz varsa

+0

"IsUserAnAdmin işlevi, CheckTokenMembership için bir sarmalayıcıdır. Bu işlevi doğrudan, IsUserAnAdmin'i çağırmak yerine Yönetici grubu durumunu belirlemek için çağırmanız önerilir". (Bağlantılı sayfadan) – Espo

+0

Daha önce uyarıyı fark etmemiştim. Microsoft'un neden bu kadar basit bir yardımcısının kullanımından vazgeçmeyi düşünebileceğini merak ediyorum ... Neyse ki geriye dönük uyumluluk için iyi bir sicili var. –

0

Ben belirli bir kullanıcıya kimliğini ayarlamak olası bekliyoruz ama nasıl bakmadım.