AccountManagement.UserPrincipal.Current需要5秒钟

时间:2010-04-09 20:02:10

标签: .net

我正在使用新的.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的独立机器。我不属于任何域名等。

有关如何改善表现的任何想法?

1 个答案:

答案 0 :(得分:4)

我的猜测是,由于DirectoryServices主要用于查找目录中的数据(在本例中为Active Directory),并且您在一台计算机上,因此查找域控制器的请求超时。

我假设您想获取当前用户的名称,而您可以使用“旧”System.Security.Principal.WindowsIdentity.GetCurrent()方法来实现。

如果您需要该用户的委托人,可以使用以下代码:

WindowsIdentity ident = WindowsIdentity.GetCurrent();
IPrincipal principal = new WindowsPrincipal(ident);