【发布时间】:2017-10-05 14:55:50
【问题描述】:
我有一个简单的 WPF 应用程序,它试图查找给定用户所属的 ActiveDirectory 组。检索组的代码是:
public static HashSet<string> GetUserGroups(string userLogon)
{
var groups = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
var identity = new WindowsIdentity(userLogon);
if (identity.Groups == null) { return groups; }
var type = typeof(NTAccount);
foreach (var group in identity.Groups)
{
groups.Add(group.Translate(type).ToString());
}
return groups;
}
但是,当我尝试在应用程序启动时运行它时,当方法尝试创建 new WindowsIdentity(userLogon) 时抛出以下异常:
System.Security.AccessControl.PrivilegeNotHeldException: '进程 不具备“SeTcbPrivilege”权限,这是所需的 这个操作。'
如果我在 Console 应用程序中运行代码,这不会发生。关于可能导致此问题的任何想法?
【问题讨论】:
-
您是否尝试过以管理员身份运行此应用程序? consolapp 是否在同一用户下运行?