Mensaje de error cuando una aplicación llama a la API RegisterTypeLib para registrar una biblioteca de tipos en Windows Vista: "Acceso denegado"

Síntomas

Considere el siguiente escenario. En una aplicación que se ejecuta en un equipo basado en Windows Vista, intenta asignar el subárbol HKEY_CLASSES_ROOT del registro a otro subárbol del registro. Por ejemplo, intenta asignar el subárbol HKEY_CLASSES_ROOT del registro en el subárbol del registro HKEY_CURRENT_USER . Cuando la aplicación llama a RegisterTypeLib API para registrar una biblioteca de tipos, puede recibir el siguiente mensaje de error:
Acceso denegado
Además, la API RegisterTypeLib devuelve el valor TYPE_E_REGISTRYACCESS (0x8002801c).

Este problema se produce si está habilitado el Control de cuentas de usuario (UAC), y la aplicación se ejecuta bajo la cuenta de usuario limitada.

Solución

Información del Service pack

Para resolver este problema, obtenga el service pack más reciente para Windows Vista. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
935791 cómo obtener el service pack más reciente para Windows Vista

Información de la revisión

Existe un hotfix disponible desde Microsoft. Sin embargo, esta revisión se diseñó para corregir únicamente el problema que se describe en este artículo. Aplíquela sólo a sistemas que experimenten este problema específico. Esta revisión podría ser sometida a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere a la próxima actualización de software que contenga este hotfix.

Si la revisión está disponible para su descarga, hay una sección de "Descarga de revisión disponible" en la parte superior de este artículo de Knowledge Base. Si esta sección no aparece, póngase en contacto con el servicio al cliente de Microsoft y soporte técnico para obtener la revisión.

Nota: Si se producen problemas adicionales o si se requiere cualquier otra solución, será necesario crear una solicitud de revisión independiente. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no califican para esta revisión específica. Para obtener una lista completa de los números de teléfono de servicio al cliente de Microsoft o para crear una solicitud de servicio independiente, visite el siguiente sitio Web de Microsoft:Nota: El formulario de "Descarga de Hotfix disponible" muestra los idiomas para los que el Hotfix está disponible. Si no ve su idioma, es porque no hay una revisión para ese idioma. Después de instalar este hotfix, debe habilitar la revisión. Consulte la sección "Habilitar la revisión" para obtener más información.

Requisitos previos

Debe tener Windows Vista instalado para poder aplicar este hotfix.

Requisito de reinicio

Debe reiniciar el equipo después de aplicar este hotfix.

Información de reemplazo de revisión

Este hotfix no sustituye a otras revisiones.

Información de archivo

La versión en inglés de esta revisión tiene los atributos de archivo (o atributos del archivo más reciente) mostrados en la tabla siguiente. Las fechas y horas de estos archivos se muestran en la hora Universal coordinada (UTC). Al ver la información del archivo, se convierte en hora local. Para encontrar la diferencia entre la hora UTC y la hora local, utilice la ficha Zona horaria en el elemento de Fecha y hora del Panel de control.
Windows Vista, versiones basadas en x86
Nombre del archivoVersión del archivoTamaño de archivoFechaHoraPlataforma
X86_4bbe5d294834975fb80c47470752adb1_31bf3856ad364e35_6.0.6000.20604_none_dea9a3d5aecfc0a3.manifestNo aplicable70223-May-200719:26No aplicable
X86_microsoft-windows-ole-automation_31bf3856ad364e35_6.0.6000.20604_none_bba787f5176daa36.manifestNo aplicable88,60923-May-200719:28No aplicable
Oleaut32.dll6.0.6000.20604558,59223-May-200704:43x86
Nombre del archivoVersión del archivoTamaño de archivoFechaHoraPlataforma
X86_4bbe5d294834975fb80c47470752adb1_31bf3856ad364e35_6.0.6000.20604_none_dea9a3d5aecfc0a3.manifestNo aplicable70223-May-200719:26No aplicable
X86_microsoft-windows-ole-automation_31bf3856ad364e35_6.0.6000.20604_none_bba787f5176daa36.manifestNo aplicable88,60923-May-200719:28No aplicable
Oleaut32.dll6.0.6000.20604558,59223-May-200704:43x86
Update.mumNo aplicable2.00123-May-200719:26No aplicable
Windows Vista, versiones de 64 bits
Nombre del archivoVersión del archivoTamaño de archivoFechaHoraPlataforma
Amd64_4a6574fa45a2d59d7249caa900399476_31bf3856ad364e35_6.0.6000.20604_none_cd312e3fb1af0597.manifestNo aplicable70623-May-200719:26No aplicable
Amd64_65563c6fd47be510b29634938ca65f92_31bf3856ad364e35_6.0.6000.20604_none_21b539ccf0659813.manifestNo aplicable70623-May-200719:26No aplicable
Amd64_microsoft-windows-ole-automation_31bf3856ad364e35_6.0.6000.20604_none_17c62378cfcb1b6c.manifestNo aplicable86,22723-May-200719:33No aplicable
Package_1_for_kb935200~31bf3856ad364e35~amd64~~6.0.1.0.mumNo aplicable1.79523-May-200719:26No aplicable
Package_2_for_kb935200~31bf3856ad364e35~amd64~~6.0.1.0.mumNo aplicable2,01223-May-200719:26No aplicable
Update.mumNo aplicable1,90923-May-200719:26No aplicable
Wow64_microsoft-windows-ole-automation_31bf3856ad364e35_6.0.6000.20604_none_221acdcb042bdd67.manifestNo aplicable86,47523-May-200719:33No aplicable
Oleaut32.dll6.0.6000.20604867,84023-May-200705:54x64
Oleaut32.dll6.0.6000.20604558,59223-May-200704:43x86

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a". Este problema se corrigió primero en Windows Vista Service Pack 1.

Más información

Habilitar la revisión

Después de instalar este hotfix, debe utilizar uno de los métodos siguientes para habilitar la revisión.

Método 1

Este hotfix agrega una nueva API. Antes de que la aplicación llama a la API RegisterTypeLib , la aplicación puede llamar a la función OaEnablePerUserTLibRegistration void para habilitar el RegisterTypeLIb API utilizar la asignación de reemplazo correspondiente. La función OaEnablePerUserTLibRegistration se exporta desde el archivo Oleaut32.dll. Debe hacer referencia a este archivo mediante la vinculación dinámica en tiempo de ejecución y mediante la función de GetProcAddress . Para obtener más información acerca de la función de GetProcAddress y vinculación dinámica en tiempo de ejecución, visite el siguiente sitio Web de Microsoft:

Método 2

Después de instalar la revisión, RegisterTypeLib API comprobará la variable de entorno OAPERUSERTLIBREG . Si el valor de la variable OAPERUSERTLIBREG es 1, RegisterTypeLIb API utiliza la asignación de reemplazo correspondiente. Dado que esta variable de entorno se lee durante la inicialización de la función DLLMain , debe establecer esta variable de entorno antes de ejecutar la aplicación. Para ello, ejecute los comandos siguientes en un símbolo del sistema:
  • establecer OAPERUSERTLIBREG = 1
  • iniciar cmd.exe /c "establecer OAPERUSERTLIBREG = 1 & & MyApp.exe"

    Nota: El marcador de posición de MyApp.exe apunta a la aplicación que desea ejecutar.
Nota: El primer comando establece la variable de entorno. El segundo comando establece la variable de entorno y, a continuación, ejecuta la aplicación. Si utiliza el primer comando, también debe ejecutar la aplicación en este símbolo.
Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:

824684 descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft

Referencias

Para obtener más información sobre el subárbol HKEY_CLASSES_ROOT del registro, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca de la API RegisterTypeLib , visite el siguiente sitio Web de Microsoft:
Propiedades

Id. de artículo: 935200 - Última revisión: 14 ene. 2017 - Revisión: 1

Comentarios