Сводка : для одного из наших веб-приложений требуется доступ на запись к C:\Windows\Temp
. Однако независимо от того, насколько сильно я ослабил разрешение NTFS, procmon показывает ACCESS DENIED
.
Справочная информация (которая может или не может иметь отношение к проблеме): Мы используем OLEDB для доступа к базе данных MS Access (которая находится вне C: \ Windows \ Temp). К сожалению, этому драйверу OLEDB требуется доступ на запись в каталог TEMP профиля пользователя (который при запуске в IIS 7.5 оказывается C: \ Windows \ Temp), в противном случае генерируется страшная исключительная ситуация «Unspecified Error». Подробнее см. KB 926939 . Я следовал инструкциям в статье базы знаний, но это не помогло.
Детали
Это вывод icacls C:\Windows\Temp
. В целях отладки я дал полные права на Everyone
.
C:\Windows\Temp NT AUTHORITY\SYSTEM:(OI)(CI)(F)
CREATOR OWNER:(OI)(CI)(IO)(F)
BUILTIN\IIS_IUSRS:(OI)(CI)(S,RD)
BUILTIN\Users:(CI)(S,WD,AD,X)
BUILTIN\Administrators:(OI)(CI)(F)
Everyone:(OI)(CI)(F)
Однако, это скриншот procmon:
Desired Access: Generic Read/Write, Delete
Disposition: Create
Options: Synchronous IO Non-Alert, Non-Directory File, Random Access, Delete On Close, Open No Recall
Attributes: NT
ShareMode: None
AllocationSize: 0
Impersonating: MYDOMAIN\myuser
PS: при входе в систему как MYDOMAIN\myuser
я могу без проблем создавать файлы в C:\Windows\Temp
с помощью проводника Windows.
РЕДАКТИРОВАТЬ : соответствующие части web.config:
<authentication mode="Windows" />
<identity impersonate="true" />
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
Аутентификация, кажется, работает, то есть System.Security.Principal.WindowsIdentity.GetCurrent().Name
(что показано на моей пользовательской странице ошибок) возвращает MYDOMAIN\myuser
.