DirectoryEntry.NativeObject为Windows 2008中的Administrators组中的用户抛出拒绝访问

时间:2008-11-04 21:40:02

标签: .net permissions windows-server-2008 directoryservices administrator

我有一个本地用户,它是Administrators本地组的成员。

当我运行此代码时:

using System;
using System.DirectoryServices;

namespace nanttest
{
    class Program
    {
        public static void Main(string[] args)
        {
            using(DirectoryEntry entry = new DirectoryEntry("IIS://localhost/W3SVC"))
            {
                object absobject = entry.NativeObject;
                Console.WriteLine("Name: {0}", entry.Name);
            }

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

我收到:

  

未处理的例外情况:   System.Runtime.InteropServices.COMException   (0x80070005):访问被拒绝。

     

在   System.DirectoryServices.DirectoryEntry.Bind(布尔   throwIfFail)   System.DirectoryServices.DirectoryEntry.Bind()   在   System.DirectoryServices.DirectoryEntry.get_NativeObject()   在nanttest.Program.Main(String []   args)in   C:\工作\ nanttest \ nanttest \的Program.cs:行   20

如果我以管理员身份登录时运行此代码,则可以正常运行。

此外,如果我以DomainAdmin用户身份登录,则此代码将失败。我已将MYDOMAIN \ DomainAdmins和MYDOMAIN \ mydomainuser添加为本地Administrators组的成员。

我应该为这些用户添加哪些其他权限,以便他们可以运行此代码。

1 个答案:

答案 0 :(得分:6)

要回答我自己的问题,其他人可以找到解决方案:

问题在于Windows 2008中的默认UAC设置。即使用户位于Administrators组中,他/她仍需要提升权限才能运行某些操作(上面的操作似乎就在其中)。

因此,解决方案1 ​​ - 使用“以管理员身份运行”运行应用程序,或者从使用该选项启动的命令提示符启动它。

解决方案2:为管理员组禁用UAC - 我使用了this article中的方法#3(组策略更改)。请记住在这些更改后重新启动服务器。