首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试RefreshCache for DirectoryEntry时抛出DirectoryEntry (0x80072020)

尝试RefreshCache for DirectoryEntry时抛出DirectoryEntry (0x80072020)
EN

Stack Overflow用户
提问于 2013-08-05 09:11:55
回答 1查看 1.7K关注 0票数 0

我编写了一个非常样例的测试程序,并将其作为域计算机中的本地系统帐户运行。代码如下所示:

代码语言:javascript
复制
static void Main(string[] args)
{
    try
    {
        System.Console.Out.WriteLine("Test Start");
        List<string> temp = new List<string>();
        temp.Add(Environment.UserDomainName);
        temp.Add("test");
        temp.Add("test.com");
        temp.Add("dc.test.com");
        temp.Add("gc.test.com");

        foreach (var i in temp)
        {

            using (HostingEnvironment.Impersonate())
            {
                System.Console.WriteLine("LDAP://{0}", i);
                DirectoryEntry entry = new DirectoryEntry("LDAP://" + i);
                try
                {
                    entry.RefreshCache();
                    string nativeGuid = entry.NativeGuid;
                    string path = entry.Path;
                    string server = entry.Options.GetCurrentServerName();
                    System.Console.WriteLine("{0} success!", i);
                }
                catch (Exception e)
                {
                    System.Console.WriteLine("{0}\n {1}", i, e);
                }
            }
        }

        System.Console.Out.WriteLine("Test End");
    }
    catch (Exception e)
    {
        System.Console.Out.WriteLine("e:Main{0}", e.Message);
    }
    System.Console.In.ReadLine();
}

域的NetBIOS名称是"test",完整的域名是"test.com“。"dc.test.com“是DC,"gc.test.com”是GC。

它适用于"test.com“、”dc.test.com“和"gc.test.com",但它将DirectoryServicesCOMException (0x80072020)用于”测试“和"Environment.UserDomainName”。

详细的运行结果是:

代码语言:javascript
复制
Test Start
LDAP://TEST
TEST
 System.DirectoryServices.DirectoryServicesCOMException (0x80072020): An operati
ons error occurred.

   at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.RefreshCache()
   at ConsoleApplication1.Program.Main(String[] args)
LDAP://test
test
 System.DirectoryServices.DirectoryServicesCOMException (0x80072020): An operati
ons error occurred.

   at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.RefreshCache()
   at ConsoleApplication1.Program.Main(String[] args)
LDAP://test.com
test.com success!
LDAP://dc.test.com
dc.test.com success!
LDAP://gc.test.com
gc.test.com success!
Test End

如果我把它作为domian管理帐户运行,一切都很好。知道是什么原因造成的吗?非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-05 15:59:33

你到底想做什么?如果您在一台连接到域的机器上,则只需执行new DirectoryEntry()

至于您的错误,当您使用本地帐户登录到Windows时,UserDomainName环境变量将设置为本地计算机名。如果该机器的名称与域的NetBIOS名称相同,那么如果被混淆了,我就不会感到惊讶了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18054413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档