2009-11-04 2 views
0

Хорошо,Доступ запрещен при загрузке зависимостей .dll .NET

У нас есть приложение .NET WinForms, который имеет несколько .NET DLL, это зависит от того, работает на XP машине, которая подключена к сети в большом домен.

Немного истории, которая определяет проблему.

Мы развернули это приложение на машине для клиентов, вошедшие в систему как администратор, и все работало нормально.

После этого мы вошли в нижнюю привилегированную учетную запись, и низко и не удалось запустить приложение, , но ожидалось.

Теперь запуск исполняемого файла, работает приложение (яй), но тогда мы получили его, чтобы выполнить действие, необходимый код в одном из него зависит (управляемый) DLL файлов ...

Exeception брошен, заявив, что «сборка« xxxx.dll »не загружена (доступ запрещен)« Я уверен, что их ИТ-отдел имеет те же права доступа к файлу, что и основной исполняемый файл (и быстро просматривает то, что может видеть пользователь с более низким привилегией настроек безопасности, это действительно так), и они не были установлены как «заблокированные», как иногда делает XP.

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

EDIT: Оказывается, это была права доступа к файлам, которые были проблемы, и что ИТ-отдел в вопросе hadn» t после проверки того, что разрешения были применены ко всем дочерним объектам. Поскольку я не могу принять все 4 ваших ответа за такие хорошие идеи, я дал вам все до голосования.

ответ

2

У пользователя может быть доступ к DLL, указанному в сообщении об ошибке, но есть ли у них доступ ко всем DLL, которые нужны этой DLL? Посмотрите что-то вроде Dependency Walker, чтобы найти любые DLL-файлы, которые могут потребоваться.

+0

Я также думал об этом, но любые DLL, помимо стандартных DLL-библиотек DLL в Windows, находятся в каталоге приложений. – Sekhat

1

Несколько возможных проблемы, некоторые подробно описаны здесь: http://msdn.microsoft.com/en-us/library/ab4eace3.aspx

Вы можете просить, чтобы загрузить сборку, которая делает требование безопасности, которые больше, чем главное приложение. (Запрос разрешения: http://msdn.microsoft.com/en-us/library/yd267cce.aspx)

Если вы работаете полное доверие это маловероятно, но если DLL загружаемое находится в сети убедитесь, что это место доверенного .NET: (доверитель доли: http://blogs.msdn.com/shawnfa/archive/2004/12/30/344554.aspx)

1

Выполняет ли DLL доступ к реестру или какой-либо другой системной папке, к которой пользователь с низкими правами не имеет доступа? Что он пытается делать, когда возникает ошибка?

Вы также можете проверить, существует ли у домена какая-либо групповая политика, которая мешает тому, что пытается сделать DLL.

+0

насколько я знаю, нет. Это сама сборка, которая в любом случае не загружается, компилятор JIT генерирует исключение загрузки сборки, в отличие от самой сборки, которая бросает ошибку. Что касается групповой политики, я тоже об этом думал, но мне нужно получить их ИТ-информацию чтобы действительно исследовать его. – Sekhat

Смежные вопросы