DirectoryEntry.NativeObject выдает отказ в доступе для пользователя из группы администраторов в Windows 2008

StackOverflow https://stackoverflow.com/questions/263552

Вопрос

У меня есть локальный пользователь, который является членом локальной группы администраторов.

Когда я запускаю этот код:

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);
        }
    }
}

Я получаю:

Необработанное Исключение:Система.Среда выполнения.Службы взаимодействия.COMException (0x80070005):Доступ запрещен.

в System.DirectoryServices.DirectoryEntry.Bind(логическое значение Выбросить файл) в System.DirectoryServices.DirectoryEntry.Bind() в System.DirectoryServices.DirectoryEntry.get_NativeObject() в nantest.Program.Main(строка[] аргументы) в c:\Work anttest anttest\Program.cs:line 20

Если я запускаю этот код, войдя в систему как администратор, он работает нормально.

Кроме того, этот код завершается с ошибкой, если я запускаю его, войдя в систему как пользователь DomainAdmin.Я добавил MYDOMAIN\DomainAdmins и MYDOMAIN\mydomainuser в качестве членов локальной группы администраторов.

Какие еще разрешения я должен добавить для этих пользователей, чтобы они могли запускать этот код.

Это было полезно?

Решение

Чтобы ответить на мой собственный вопрос, чтобы другие могли найти решение:

Проблема связана с настройками UAC по умолчанию в Windows 2008.Даже если пользователь входит в группу администраторов, ему / ей все равно требуются повышенные привилегии для выполнения некоторых операций (приведенная выше, по-видимому, входит в их число).

Итак, решение 1 - запустите приложение, используя "Запуск от имени администратора", или запустите его из командной строки, которая была запущена с этой опцией.

Решение 2:Отключить UAC для группы администраторов - я использовал метод № 3 из эта статья (изменения групповой политики).Не забудьте перезагрузить сервер после этих изменений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top