c# javascript vbscript wsh regfreecom

c# - Microsoft.Windows.ActCtx en Windows Xp



javascript vbscript (2)

Si Microsoft.Windows.ActCtx fuera redistribuible, tendría que haber alguna forma de que ingresara en la máquina y se registrara globalmente. Si tuvo acceso para registrar esto en la máquina, ¿no puede inscribirse simplemente registrar Application.Interface? Si se trata de un entorno restringido ... bueno, debe lidiar con lo que ya está disponible.

Parece que está usando el script wsh para iniciar su aplicación. ¿Por qué no escribir un código auxiliar para iniciar la aplicación en código nativo o administrado (donde podrá usar un manifiesto) y llamar a ese código auxiliar en su lugar?

Estos días estoy muy ocupado desarrollando una aplicación activex / com. Algunos de nuestros clientes están trabajando en entornos de Windows muy restringidos. Entonces decidí hacer que mi aplicación quedara libre. Encontré genman32.exe que puede crear fácilmente manifiestos (también mt.exe es útil). Todo fue bien pero cuando traté de ejecutar mi aplicación desde wsh (vbs o js) -que está obligada para mi situación porque la aplicación funciona en un servidor de servidor-

set o = CreateObject("Application.Interface") // No object reference

Debido a que "CreateObject" mira al registro y no hay registro de entrada :) luego busqué y encontré lo que es "actctx". Es muy fácil de implementar en un entorno dot.net. Pero debo ejecutar mi aplicación desde wsh (vbs o js);) así que decidí buscar un poco y luego encontré

set o = CreateObject("Microsoft.Windows.ActCtx") o.manifest = "L://Application.dll.manifest" set app = o.CreateObject("Application.Interface") app.Launch() // which is my executing function

Problema: la interfaz "Microsoft.Windows.ActCtx" no está disponible en las máquinas con Windows Xp ni siquiera en SP3. Microsoft nunca lo permite. ¿Hay alguna solución a ese problema? ¿Conoces algún otro método o actualización de Windows que cree esa interfaz?


Descubrí el problema con mi manifiesto. Lo compartiré con cualquier otra persona que se haya topado con un problema similar.

Tenga en cuenta que DEBE especificar la propiedad progid = "" en su manifiesto al usar esto con la interfaz "Microsoft.Windows.ActCtx", de lo contrario obtendrá el error ActiveX Component Can not Create Object.

<comClass clsid="{ED59F192-EF2E-4BCC-95EB-85A8C5C65326}" progid="myclass.process" threadingModel = "Apartment" />

El siguiente ejemplo de manifiesto debería ponerlo en funcionamiento :)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myclass" version="1.0.0.0"/> <file name = "myclass.dll"> <comClass clsid="{ED59F192-EF2E-4BCC-95EB-85A8C5C65326}" progid="myclass.process" threadingModel = "Apartment" /> <typelib tlbid="{7AE20C3A-48C2-42C1-A68D-A1C3EB0A2C65}" version="1.0" helpdir=""/> </file> <comInterfaceExternalProxyStub name="_PROCESS" iid="{187D0811-470D-44C0-B68C-C1C7F3EEFDA0}" proxyStubClsid32="{00020424-0000-0000-C000-000000000046}" baseInterface="{00000000-0000-0000-C000-000000000046}" tlbid = "{7AE20C3A-48C2-42C1-A68D-A1C3EB0A2C65}" /> </assembly>