我正在使用新的.NET 3.5 System.DirectoryServices.AccountManagement API 。
在我的代码中,我需要确定当前的System.DirectoryServices.AccountManagement.UserPrincipal。
我天真的做法就是这样做:
using AccountManagement = System.DirectoryServices.AccountManagement;
...
// Determine current UserPrincipal.
// (On my machine, this blocks for 5 seconds)
//
AccountManagement.UserPrincipal principal = AccountManagement.UserPrincipal.Current;
我的电脑是运行Vista的独立机器。我不属于任何域名等。
有关如何改善表现的任何想法?
答案 0 :(得分:4)
我的猜测是,由于DirectoryServices主要用于查找目录中的数据(在本例中为Active Directory),并且您在一台计算机上,因此查找域控制器的请求超时。
我假设您想获取当前用户的名称,而您可以使用“旧”System.Security.Principal.WindowsIdentity.GetCurrent()
方法来实现。
如果您需要该用户的委托人,可以使用以下代码:
WindowsIdentity ident = WindowsIdentity.GetCurrent();
IPrincipal principal = new WindowsPrincipal(ident);