Недавно я работал над миграцией серверов и устранял проблемы с разрешениями на некоторых клонированных серверах Windows 2008. Я обычно использую Прокмон чтобы сузить круг проблем с разрешениями и исправить их, а затем возобновить тестирование.
Что-то, что меня поражает, - это когда я назначаю правильные разрешения, а затем снова запускаю тест, но по-прежнему получаю ту же ошибку "ACCESS DENIED" в procmon для того же пользователя, которому я только что назначил полный доступ для этого каталога или раздела реестра. это не удается.
Как это технически возможно? Почему, кроме отсутствия правильного набора ACL, должен быть возвращен ACCESS DENIED?
В этой конкретной головной боли у меня есть учетная запись Active Directory, которую мы используем для запуска наших служб, которые должны иметь возможность охватывать несколько серверов, и она постоянно получает ошибки ACCESS DENIED на HKEY_CLASSES_ROOT \ Wow6432Node \ CLSID. Я трижды проверил, что у этого пользователя есть полный доступ к этому ключу, но это все равно происходит.
Вот подробности из procmon:
Date & Time: 8/9/2011 5:13:27 PM
Event Class: Registry
Operation: RegOpenKey
Result: ACCESS DENIED
Path: HKCR\Wow6432Node\CLSID
TID: 5084
Duration: 0.0000073
Desired Access: Read
Description: Event Alarm Service
Company: Dorian Software Creations, Inc.
Name: EvtAlarm.exe
Version: 6.0.0.148
Path: C:\Program Files (x86)\Event Alarm\EvtAlarm.exe
Command Line: "C:\Program Files (x86)\Event Alarm\EvtAlarm.exe"
PID: 5232
Parent PID: 616
Session ID: 0
User: OUR\SpecialUser
Auth ID: 00000000:09af42e2
Architecture: 32-bit
Virtualized: False
Integrity: High
Started: 8/9/2011 5:13:27 PM
Ended: 8/9/2011 5:13:39 PM
Редактировать: Спасибо всем за отзывы. Я решил нашу основную проблему, хотя мой вопрос все еще в силе, поскольку я не чувствую, что то, что я сделал, действительно является объяснением, поэтому я не собираюсь публиковать это как официальный ответ. Следуя совету компании, которая производит рассматриваемое программное обеспечение, я добавил учетную запись службы, о которой идет речь, в локальную группу администраторов, и теперь она может успешно запускаться, а ошибки ЗАПРЕЩЕН В ДОСТУПЕ исчезли. Для меня это все еще не имеет смысла, поскольку разрешения (включая действующие разрешения) показали, что эта учетная запись службы должна иметь право на доступ к разделу реестра, в котором было отказано ...
Скорее всего, токен для пользователя не был восстановлен. Когда пользователь входит в систему / проверяет подлинность, ему генерируется токен безопасности со всеми его разрешениями. Когда происходят изменения разрешений, пользователю необходимо восстановить свой токен безопасности либо с помощью локального SAM, либо с помощью контроллера домена. Обычно это проблема только при назначении прав пользователей, а не разрешений на объекты.
Другая возможность - это концепция, если отказ имеет приоритет над позволением. Отказ может быть выше в цепочке наследования, что каскадно спускается вниз и вызывает проблемы с разрешениями.
У меня была аналогичная проблема с моим приложением. Решением для меня было отключить UAC