Search 检查跨域工作站C上的管理员权限#
我试图检查用户是否是特定机器上的管理员。 当计算机位于同一域时,我有以下代码可以正常工作:Search 检查跨域工作站C上的管理员权限#,search,active-directory,ldap,Search,Active Directory,Ldap,我试图检查用户是否是特定机器上的管理员。 当计算机位于同一域时,我有以下代码可以正常工作: public bool CheckAdmins(string computerName) { var identity = WindowsIdentity.GetCurrent(); var principal = new WindowsPrincipal(identity); string branchnumber = computerName.Substring(0, 3);
public bool CheckAdmins(string computerName)
{
var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
string branchnumber = computerName.Substring(0, 3);
bool admin = false;
if (logonUser.authenticate())
{
using (DirectoryEntry machine = new DirectoryEntry("WinNT://" + logonUser.Domain + "/" + computerName,logonUser.Domain + "\\" + logonUser.UserID,logonUser.Password))
{
//get local admin group
using (DirectoryEntry group = machine.Children.Find("Administrators","group"))
{
//get all members of local admin group
object members = group.Invoke("Members", null);
foreach (object member in (IEnumerable)members)
{
//get account name
string accountName = new DirectoryEntry(member).Name;
bool isAdmin = principal.IsInRole(accountName);
if (isAdmin == true) { admin = true; }
}
}
}
}
return admin;
}
然而,在整个域中,这只是返回“未找到网络路径”。
我一直在尝试LDAP,但没有走得太远。我尝试了很多方法,理想情况下需要一个例子。这是我目前正在使用的:
String strPath = "LDAP://172.24.242.51/CN=258TP520,OU=258,DC=net,DC=test,DC=co,DC=uk";
DirectoryEntry myDE = new DirectoryEntry(strPath, "testdom\user", "password");
List<string> memberof = new List<string>();
foreach (object oMember in myDE.Properties["memberOf"])
{
memberof.Add(oMember.ToString());
}
String strPath=“LDAP://172.24.242.51/CN=258TP520,OU=258,DC=net,DC=test,DC=co,DC=uk”;
DirectoryEntry myDE=新的DirectoryEntry(strPath,“testdom\user”,“password”);
List memberof=新列表();
foreach(myDE.Properties[“memberOf”]中的对象oMember)
{
memberof.Add(oMember.ToString());
}
然而,myDE.properties似乎不包含任何内容。感谢大家的帮助!
谢谢我需要将FQDN附加到computername,如下所示
using (DirectoryEntry machine = new DirectoryEntry("WinNT://" + computerName + ".net.test.co.uk",logonUser.Domain + "\\" + logonUser.UserID,logonUser.Password))
这解决了我的问题