C# 检测用户是否在组中

C# 检测用户是否在组中,c#,.net,vb.net,C#,.net,Vb.net,如何检测任意用户是否是计算机上的管理员?我有用户的域和用户名,但没有密码。该用户不是当前登录的用户,因此我不能仅使用WindowsIdentity.GetCurrent。使用LDAP。参见示例。使用LDAP。请参阅示例。您可以使用System.DirectoryServices先加载本地计算机,然后搜索给定组中的任何用户。请尝试以下代码: DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.Machi

如何检测任意用户是否是计算机上的管理员?我有用户的域和用户名,但没有密码。该用户不是当前登录的用户,因此我不能仅使用WindowsIdentity.GetCurrent。

使用LDAP。参见示例。

使用LDAP。请参阅示例。

您可以使用System.DirectoryServices先加载本地计算机,然后搜索给定组中的任何用户。请尝试以下代码:

DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
DirectoryEntry admGroup = localMachine.Children.Find("administrators","group");
object members = admGroup.Invoke("members", null);
然后为members对象中的每个成员创建一个新的DirectoryEntry:

foreach (object groupMember in (IEnumerable)members)
{
  DirectoryEntry member = new DirectoryEntry(groupMember);
  //Do what you want
}
foreach循环中的成员对象是,其中有大量关于用户的数据。将成员的名称与循环中的当前名称进行比较:

if (memberSearch.name == member.name) {
  return true;
} else {
  return false;
}

您还可以搜索members对象以查找用户等。有很多方法可以做到这一点。希望这有帮助

您可以使用System.DirectoryServices首先加载本地计算机,然后搜索给定组中的任何用户。请尝试以下代码:

DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
DirectoryEntry admGroup = localMachine.Children.Find("administrators","group");
object members = admGroup.Invoke("members", null);
然后为members对象中的每个成员创建一个新的DirectoryEntry:

foreach (object groupMember in (IEnumerable)members)
{
  DirectoryEntry member = new DirectoryEntry(groupMember);
  //Do what you want
}
foreach循环中的成员对象是,其中有大量关于用户的数据。将成员的名称与循环中的当前名称进行比较:

if (memberSearch.name == member.name) {
  return true;
} else {
  return false;
}
您还可以搜索members对象以查找用户等。有很多方法可以做到这一点。希望这有帮助

用于检查用户是否在允许对计算机进行管理访问的组中

首先使用FindByIdentity获取UserPrincipal对象。然后获取用户所属的授权组。检查每个组以查看是否与内置administrators组匹配。如果内置管理员组不在用户的授权组中,则该用户不是本地计算机上的管理员

using System.DirectoryServices.AccountManagement;
using System.Linq;

var name = Environment.UserName;
var user = UserPrincipal.FindByIdentity( new PrincipalContext( ContextType.Domain ), name );
var groups = user.GetAuthorizationGroups();
var isAdmin = groups.Any( g => g.Name == "Administrators" );    
Console.WriteLine( "Admin: " + isAdmin );
用于检查用户是否在允许对计算机进行管理访问的组中

首先使用FindByIdentity获取UserPrincipal对象。然后获取用户所属的授权组。检查每个组以查看是否与内置administrators组匹配。如果内置管理员组不在用户的授权组中,则该用户不是本地计算机上的管理员

using System.DirectoryServices.AccountManagement;
using System.Linq;

var name = Environment.UserName;
var user = UserPrincipal.FindByIdentity( new PrincipalContext( ContextType.Domain ), name );
var groups = user.GetAuthorizationGroups();
var isAdmin = groups.Any( g => g.Name == "Administrators" );    
Console.WriteLine( "Admin: " + isAdmin );