DirectoryEntry.NativeObject выдает отказ в доступе для пользователя из группы администраторов в Windows 2008
-
06-07-2019 - |
Вопрос
У меня есть локальный пользователь, который является членом локальной группы администраторов.
Когда я запускаю этот код:
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 из эта статья (изменения групповой политики).Не забудьте перезагрузить сервер после этих изменений.