c# – 如何识别非人类用户?

列出系统中的所有用户,我注意到其中一些用户是系统用户而没有例如工作时间.目前,我只是列出它们并从我的循环中排除我的这是一个Q& D方法,我更喜欢这样做.

我没有找到关于systemuser实体的任何具体信息,它告诉我某个是真实的配置文件(即在Office 365门户中创建的)还是默认情况下提供给我的MS.

Q& D代码如下.

QueryExpression userQuery = new QueryExpression { EntityName = "systemuser", ... };
IEnumerable<Entity> users = service.RetrieveMultiple(userQuery).Entities;

IEnumerable<String> automatics = new[] { "INTEGRATION", "Support User", "SYSTEM" };
  foreach (Entity user in users.Where(element
    => !automatics.Contains(element.GetAttributeValue<String>("fullname")))) { ... }

第二个最佳解决方案,如果没有办法确定自动列表中的谁以及谁是真正的家伙,那就是制作详尽的全面例外列表.再一次,我的google-fu让我失望了,因为我没有在实体systemuser的自动创建实例的完整列表中找到任何文档.

最佳答案 一种方法是检查CreatedBy字段;用户SYSTEM和INTEGRATION为NULL.对于CRM管理员用户,此字段也为NULL,因此,如果管理员用户正在主动使用,则应考虑将其排除在外.

FilterExpression humanFilter = new FilterExpression();
humanFilter.AddCondition(new ConditionExpression("createdby", ConditionOperator.NotNull));

if (retrieveAdminUser)
{
  humanFilter.FilterOperator = LogicalOperator.Or;
  humanFilter.AddCondition(
    new ConditionExpression("domainname", ConditionOperator.Equal, "admin@crm"));
}

userQuery.Criteria.AddFilter(humanFilter);
点赞