كيفية التحقق مما إذا كان مستخدم معين عضوًا في مجموعة المسؤولين المضمنة؟

StackOverflow https://stackoverflow.com/questions/52256

  •  09-06-2019
  •  | 
  •  

سؤال

أحتاج إلى التحقق برمجيًا (في .NET) مما إذا كان مستخدم معين (حساب المجال) عضوًا في مجموعة المسؤولين المضمنة على جهاز الكمبيوتر الحالي (الجهاز الذي يتم تنفيذ التطبيق فيه).

هل هو ممكن؟

هل كانت مفيدة؟

المحلول

لا أعرف شيئًا عن .Net، ولكن في نظام Win32، الطريقة السهلة هي الاتصال بـ IsUserAnAdmin().إذا كنت بحاجة إلى مزيد من التحكم، يمكنك فتح الرمز المميز للعملية والتحقق من خلال CheckTokenMembership لكل مجموعة تحتاج إلى التحقق منها

يحرر: يرى pinvoc.net للحصول على نموذج التعليمات البرمجية لـ .NET (شكرًا لك تشوبين)

نصائح أخرى

توجد واجهة برمجة تطبيقات Win32 لهذا يمكنك P/استدعاءها: IsUserAnAdmin

السؤال أكثر تعقيدًا في نظام التشغيل Vista ...انظر الى هذا مشاركة مدونة.

يمكنك تكرار المجموعات كما فعلت في هذه الإجابة:

تحديد أعضاء المجموعات المحلية عبر C#

بعد قراءة المزيد، سيكون أسهل شيء هو استخدام System.DirectoryServices.AccountManagement مساحة الاسم.وهنا كيف يمكن استخدامه:

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

عينة:

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);
}

إذا كنت تتحدث عن المستخدم قيد التشغيل حاليًا

using System.Security.Principal;

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

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

إذا لم يكن ثم أتوقع أنه من الممكن تعيين هوية لمستخدم معين ولكن لم يتم النظر في كيفية القيام بذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top