Thread: Using custom COM interfaces without registering - is it possible?

  1. #1
    Registered User
    Join Date
    Oct 2007
    Posts
    9

    Question Using custom COM interfaces without registering - is it possible?

    I have a problem with COM DLL's.

    I want to create a portable application (entirely in unmanaged C++) which will work of USB drive. Also I need to be sure that the program will run even if current Windows is limited (has no rights to install anything).

    My app needs some custom COM interfaces (to be more specific - the link to the dll: http://www.linux-foundation.org/en/A...y/IAccessible2).

    The problem is that as far as I know to be able to use such a COM dll, it needs to be registered with regsvr32 but as my app will possibly run in a limited user environment, it seems, I will not be able to register my DLL at the start of the session and unregister it later.

    Could you, please, suggest something (I have no time nor skills to rewrite that IAccessible2 dll to be implemented otherwise not as COM, but if could create some wrapper if it will solve the problem)?

    I have found an article from MS:
    http://msdn2.microsoft.com/en-us/library/ms973913.aspx

    has anyone experience with it? Can it help me?
    If anyone have succeeded in using custom COM interfaces without registering the DLL, I would be really grateful for an advice or links.

    Thanks.
    And Happy New Year

  2. #2
    Registered User Codeplug's Avatar
    Join Date
    Mar 2003
    Posts
    4,981
    There are two solutions I know of - but I can't say that either of them will allow you to use the unregistered COM objects under a strict user account.

    What you've already found is definately the easiest method. However, since it uses manifests that solution is only available on XP and up.

    The only example I could find for creating an un-registered COM object from a DLL was in VB (and it's not as easy as using manifests). Basically you start with LoadTypeLibEx() to get information on the classes you want to instantiate. Then LoadLibrary() and GetProcAddress("DllGetClassObject"). Then you can call DllGetClassObject() directly to get the IClassFactory interface for the object you want to instantiate.

    http://code.filehungry.com/product/l...t_registration

    gg

  3. #3
    Registered User
    Join Date
    Jan 2008
    Posts
    1
    midx, It might be good to ask your question in the IA2 forum. Refer to https://lists.linux-foundation.org/m...essibility-ia2 to join the list. I suspect that you are referring to the need for an IA2 proxy DLL so ATs (screen readers) can access your code. It was decided by the IA2 committee that each AT would install a proxy DLL and that apps would not have to install it. See http://www.linux-foundation.org/en/A...e2/ComProxyDLL and http://bugs.freestandards.org/show_bug.cgi?id=110. Note that the DLL has not yet been made available because I don't have permission from IBM to build and publish it but if a non-IBMer would build it and attach it to bug 110 that would be great.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Custom Allocation
    By SevenThunders in forum C Programming
    Replies: 17
    Last Post: 04-09-2007, 04:10 PM
  2. Stl sets and custom classes.
    By cunnus88 in forum C++ Programming
    Replies: 3
    Last Post: 05-12-2006, 11:58 PM
  3. Text engine
    By Death_Wraith in forum Game Programming
    Replies: 18
    Last Post: 11-15-2004, 07:44 PM
  4. Need help with detecting wireless interfaces
    By wikiwest in forum Linux Programming
    Replies: 0
    Last Post: 04-06-2004, 08:31 PM