2009-12-04 74 views
6

Al intentar ejecutar regasm en Win2008 servidor:Problema registrar una DLL - Acceso denegado

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

me sale el siguiente error:

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

lo que quiere decir esto

+0

Parece que no tiene acceso para escribir cosas en la caché de ensamblados global. ¿Estás corriendo como un usuario estándar? ¿Qué hay de espacio en disco? Instalación anterior esperando para terminar? – Craig

+0

En mi experiencia, si está tratando de desarrollar algo para ejecutar en un servidor 2008, simplemente debe darse por vencido antes de comenzar a ahorrar tiempo/dinero/y dolores de cabeza porque los derechos de seguridad están fuera de los rangos en ese sistema operativo. – Jrud

+0

sí - Debería haber ejecutado cmd.exe como Adminstrator. duh! – Vidar

Respuesta

9

La cuenta en la que se corre regasm no tiene derechos para escribir en C: \ Archivos de programa \ FooProg \ y por eso regasm no puede escribir el .tlb. Ejecute regasm bajo una cuenta con privilegios de administrador.

3

La cuenta que están usando las necesidades de privilegios de administrador.

1

Ese error viene mostlikely arriba porque no se puede eliminar un archivo .tlb correspondiente. Otros dos sugerencias: 1. Detener IIS e intentan registrarse de nuevo: 2. Detener IIS, eliminar archivos .tlb desde donde quiera que su archivo DLL es y luego intentan registrarse de nuevo.

11

Ese error viene mostlikely arriba porque no se puede eliminar un archivo .tlb correspondiente. Otros dos sugerencias:

  1. detener IIS y intento de registrarse de nuevo:
  2. detener IIS, eliminar archivos .tlb desde donde su archivo DLL es y luego intentan registrarse de nuevo.
  3. Cierre todas las herramientas/IIS/dev IE (que podrían estar manteniendo algunos archivos en el estado de sólo lectura) y luego intentar registrar el archivo DLL
+0

cierre IDE resolvió mi problema, ¡gracias! – StarCub

+1

+1 Esto me ayudó a encontrar el problema. Accidentalmente agregué un "\" después del nombre del archivo tlb y creó una carpeta con el mismo nombre que el archivo tlb. Eliminar la carpeta resolvió el problema. – surfen

+0

Gracias por compartir esa confirmación surfen. Esa carpeta adicional definitivamente descarrilaría su ejecución. –

1

En mi caso tanto el .dll y el archivo .tlb fueron de sólo lectura eliminar el cheque de ReadOnly funcionó para mí, también cerré el proceso que lo estaba usando (Visual Studio IDE).

+0

+1 No eliminé el archivo listo solo en mi caso, pero simplemente eliminé el archivo .tlb, pero voltear solo la lectura probablemente me habría hecho lo mismo porque ya corría con privilegios administrativos. –

0

primero tenía que eliminar todos los espacios en la ruta al archivo DLL antes regasm encuentra el archivo DLL.

Pero cuando he intentado con comillas alrededor de los objetivos que se trabajaron todos modos.

1

También puede obtener este problema si no se especifica una ruta completa en el argumento /tlb.

Se va a intentar escribir en C:\windows\system32. Incluso si se ejecuta como administrador, de manera predeterminada no tiene derechos para escribir en ese directorio.

La solución es simplemente para proporcionar una ruta completa (en un directorio que tiene derechos a) en el argumento /tlb.

1

Lo más probable es que está recibiendo el error debido a un proceso que tiene ganchos en el archivo .dll o .tlb que está intentando registrar o copiar. Reinicie su máquina y vuelva a intentarlo o elimine el archivo .tlb y vuelva a generarlo para asegurarse de poder acceder a él.

0

Win 7 (si ya están administrador) - Puede habilitar permisos para el archivo haciendo clic derecho y propiedades con el acceso, la ficha seguridad, haga clic en editar, revisar el permitir los permisos, por ejemplo, Control total.

1

que tenían un proceso dllhost.exe callejero. Matarlo me permitió eliminar el archivo .tlb y volver a registrarme. Otros enfoques (Detener IIS, detener grupos de aplicaciones, cerrar todos los IDE) no tuvieron ningún efecto.