Проблема с регистрацией DLL - Доступ запрещен - PullRequest
7 голосов
/ 04 декабря 2009

При попытке запустить regasm в Win2008 Server:

regasm "C:\Program Files\FooProg\Bar.dll" /tlb:"C:\Program Files\FooProg\Bar.tlb"

Я получаю следующую ошибку:

RegAsm: ошибка RA0000: Произошла ошибка при сохранении экспортированного библиотека типов: доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))

что это значит

Ответы [ 11 ]

13 голосов
/ 08 апреля 2010

Эта ошибка, скорее всего, возникает, потому что вы не можете удалить соответствующий файл .tlb. Два других предложения:

  1. Остановите IIS и повторите попытку регистрации:
  2. Остановите IIS, удалите файлы .tlb, где бы ни находился ваш DLL-файл, а затем попытайтесь зарегистрироваться снова.
  3. Закройте все инструменты IE / IIS / DEV (они могут сохранять некоторые файлы в состоянии только для чтения) и затем попытайтесь зарегистрировать вашу DLL
9 голосов
/ 04 декабря 2009

У учетной записи, под которой вы запускаете regasm, нет прав на запись в C: \ Program Files \ FooProg \, и поэтому regasm не может записать .tlb. Запустите regasm под учетной записью с правами администратора.

3 голосов
/ 04 декабря 2009

Используемая учетная запись требует прав администратора.

1 голос
/ 04 октября 2014

У меня был случайный процесс dllhost.exe. Убив его, я смог удалить файл .tlb и заново зарегистрироваться. Другие подходы (остановка IIS, остановка пулов приложений, закрытие всех IDE) не дали результатов.

1 голос
/ 09 апреля 2013

Более чем вероятно, что вы получаете ошибку из-за процесса, имеющего зацепки в файл .dll или .tlb, который вы пытаетесь зарегистрировать или скопировать. Перезагрузите компьютер и повторите попытку или удалите файл .tlb и перестройте его, чтобы получить к нему доступ.

1 голос
/ 04 февраля 2013

Вы также можете получить эту проблему, если не укажите полный путь в аргументе /tlb.

Он попытается записать в C:\windows\system32. Даже если вы работаете от имени администратора, по умолчанию у вас нет прав на запись в этот каталог.

Решение состоит в том, чтобы просто указать полный путь (к каталогу, на который у вас есть права) в аргументе /tlb.

1 голос
/ 03 мая 2011

В моем случае и файл .dll, и файл .tlb были доступны только для чтения, удаление проверки ReadOnly сработало для меня, также я закрыл процесс, который использовал его (Visual Studio IDE).

1 голос
/ 08 апреля 2010

Эта ошибка, скорее всего, возникает, потому что вы не можете удалить соответствующий файл .tlb. Два других предложения: 1. Остановите IIS и попробуйте зарегистрироваться снова: 2. Остановите IIS, удалите файлы .tlb, где бы ни находился ваш DLL-файл, и попробуйте снова зарегистрироваться.

0 голосов
/ 28 мая 2019

Для меня файл использовался другим приложением

0 голосов
/ 22 ноября 2013

Win 7 (если вы уже являетесь администратором) - вы можете включить разрешения для файла, щелкнув правой кнопкой мыши и получив доступ к свойствам, вкладке безопасности, нажмите кнопку «Изменить», проверьте разрешение для разрешений, например, Полный контроль.

...