2

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

当我运行此代码时:

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(Boolean throwIfFail) 在 System.DirectoryServices.DirectoryEntry.Bind() 在 System.DirectoryServices.DirectoryEntry.get_NativeObject() 在 nanttest.Program.Main(String[] args) 在 c:\Work\ nanttest\nanttest\Program.cs:第 20 行

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

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

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

4

1 回答 1

6

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

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

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

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

于 2008-11-04T22:51:27.240 回答