2009-12-04 3 views
6

При попытке запуска Regasm в Win2008 сервер:Проблема регистрации DLL - Доступ запрещен

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

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

RegAsm : error RA0000 : An error occurred while saving the exported type library: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

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

+0

Похоже, у вас нет доступа к записи материала в глобальный кэш сборок. Вы работаете как обычный пользователь? Как насчет дискового пространства? Предыдущая установка ждет завершения? – Craig

+0

По моему опыту, если вы пытаетесь разработать что-то для запуска на сервере 2008 года, вам следует просто отказаться от него, прежде чем вы начнете экономить время/деньги/и головные боли, потому что права безопасности отключены от диаграмм на этой ОС. – Jrud

+0

yep - Я должен был запустить cmd.exe как Adminstrator. Дух! – Vidar

ответ

9

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

3

На указанный счет пользуются правами администратора.

1

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

11

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

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

закрытие IDE решило мою проблему, спасибо! – StarCub

+1

+1 Это помогло мне найти проблему. Я случайно добавил «\» после имени tlbfile и создал папку с тем же именем, что и файл tlb. Удаление папки решило проблему. – surfen

+0

Спасибо, что поделились этим подтверждением. Эта дополнительная папка решительно сорвет ваше выполнение. –

1

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

+0

+1 Я не удалял готовый только в моем случае, но просто удалил .tlb-файл, но перелистывание только для чтения, вероятно, сделало бы то же самое для меня, поскольку я уже запускал административные привилегии. –

0

Сначала мне пришлось удалить все пробелы в пути к моей dll, прежде чем regasm найдет файл dll.

Но когда я попытался использовать кавычки вокруг целей, они все равно работали.

1

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

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

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

1

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

0

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

1

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

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