public string GetUserRolesInformation(IIdentity currentIdentity = null)
{
var stringBuilder = new StringBuilder();
WindowsIdentity identity = currentIdentity as WindowsIdentity ?? WindowsIdentity.GetCurrent();
if(identity != null)
{
if(identity.Groups != null)
{
foreach(var sid in identity.Groups)
{
try
{
var translatedGroup = sid.Translate(typeof(NTAccount));
var name = translatedGroup.Value;
stringBuilder.AppendFormat(name + ",");
}
catch(Exception)
{
var winQuery = new ObjectQuery("SELECT * FROM Win32_Group WHERE SID='" + sid.Value + "'");
var searcher = new ManagementObjectSearcher(winQuery);
foreach(var o in searcher.Get())
{
var item = (ManagementObject)o;
var name = Convert.ToString(item["Name"]);
stringBuilder.AppendFormat(name + ",");
}
}
}
}
}
return stringBuilder.ToString().TrimEnd(',');
}