Feedback

C# - Ermittelt alle Gruppenmitgliedschaften eines Users auf einem

Veröffentlicht von am 12.04.2007
(2 Bewertungen)
Ermittelt alle Gruppenmitgliedschaften eines Users auf einem Remotesystem

using System.Collections.Generic;
using System.Management;
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Einführung

Das Seminar befähigt Sie zur eigenständigen Entwicklung von anwenderorientierten Programmen in VB.NET, worin auch der Einsatz von Datenbanken enthalten ist.

ASP.NET 2.0 und 3.5

Dieser Kurs vermittelt Ihnen alle Erweiterungen von Microsoft ASP.NET 2.0. Zu diesen zählen u. a. Data Bindung, Master Pages, und Security.

/// <summary>
/// Ermittelt alle Gruppenmitgliedschaften eines Users auf einem Remotesystem
/// </summary>
/// <param name="ComputerName"></param>
/// <param name="UserName"></param>
/// <returns></returns>
public static Dictionary<string, string> GetLocalGroupMemberShip(string ComputerName, string UserName)
{
    Dictionary<string, string> LocalGroups = new Dictionary<string, string>();
    ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Group WHERE LocalAccount = TRUE");
    ManagementScope ms = new ManagementScope("\\\\" + ComputerName + "\\root\\cimv2");
    mos.Scope = ms;
    try
    {
        mos.Scope.Connect();
    }
    catch (Exception)
    {
        return null;
    }

    foreach (ManagementObject mo in mos.Get())
    {
        ManagementObjectSearcher userSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_GroupUser Where GroupComponent = \"Win32_Group.Domain=\'" + ComputerName + "\',Name=\'" + mo["Name"] + "\'\"");
        userSearcher.Scope = ms;
        try
        {
            userSearcher.Scope.Connect();
            foreach (ManagementObject userObject in userSearcher.Get())
            {
                string UName = userObject["PartComponent"].ToString();
                UName = UName.Substring(UName.IndexOf("=") + 1);
                string Domain = UName.Substring(0, UName.IndexOf((","))).Replace("\"", "");
                UName = UName.Substring(UName.IndexOf("=") + 1).Replace("\"", "");
                if (UName.IndexOf(UserName, 0, StringComparison.OrdinalIgnoreCase) == 0)
                    LocalGroups.Add(mo["Name"].ToString(), Domain + "\\" + UName);
            }
        }
        catch (Exception)
        {
        }
    }
    return LocalGroups;
}

Abgelegt unter WMI, Account.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!