我知道关于这个问题有很多讨论,但没有一个真正回答了我的问题。
我正在寻找一种方法,可以远程检查当前登录用户是否具有管理员权限。无论他是机器上内置“管理员”组的成员还是嵌套在“管理员”中的组的成员,例如“域管理员”。
我找到了几种方法,但每种方法都只提供了一半的解决方案。
方法#1(可以远程工作,但仅检查本地“管理员”组):
我正在寻找一种方法,可以远程检查当前登录用户是否具有管理员权限。无论他是机器上内置“管理员”组的成员还是嵌套在“管理员”中的组的成员,例如“域管理员”。
我找到了几种方法,但每种方法都只提供了一半的解决方案。
方法#1(可以远程工作,但仅检查本地“管理员”组):
private bool isAdmin()
{
ArrayList mem2 = new ArrayList();
string hostName = basicinfomodel.Loggedusername; //a username I get from another class
try
{
using (DirectoryEntry machine = new DirectoryEntry("WinNT://" + mycomputer.myComputerName)) // remote computer that I get from another class
{
//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;
mem2.Add(new DirectoryEntry(member).Name);
}
}
}
}
catch (Exception ex)
{
// catch
}
if (mem2.Contains(hostName.ToUpper()) || mem2.Contains(hostName.ToLower()))
return true;
else
return false;
}
方法二(检查本地和域管理员权限但无法在远程计算机上工作)
static bool isAdmin()
{
WindowsIdentity User = new WindowsIdentity(@"user01");
WindowsPrincipal princ = new WindowsPrincipal(User);
return princ.IsInRole(WindowsBuiltInRole.Administrator);
}
正如我所说,我没有找到任何既能够检查用户是否真的拥有管理员权限,同时又能够远程执行这个操作的方法。
- 检查用户是否真的拥有管理员权限
- 远程执行该操作
感谢帮助!