Thanks for taking the time to help.
Yes, I tried registering the server on the client, as listed in step 1. I'd
rather not have to do this, but I assumed it would be a guaranteed
fall-back, which it was not. Ideally I wouldn't have to deploy the server
app for clients to connect to it, as I'd never want them running the server
app locally.
The client works just fine from other machines, including the server itself.
We do, indeed use dcomcnfg, as we need to ensure the server app launches
under a specific account. Everything's using domain log ins.
I will research this issue some more today, starting with looking up the
GUID by class string and verifying it on both ends.
ps: do you know what enables a component to appear in dcomcnfg? It's been a
mystery to us. The server app does NOT appear in the listing on this machine
in question, yet it does appear in mine. Not that I want to use dcomcnfg at
the client, but hey - I should be able to repoint the server app on the
client to the remote box, but obviously something's missing from the
registry if the file.
> I assume the ActiveX EXE is also registered on the client machine Todd, and
> that it has the same GUIDs there as on the remote machines. CreateObject
[quoted text clipped - 45 lines]
> >
> > I'm at my whitt's end!
Tony Proctor - 30 Aug 2005 13:23 GMT
The reason the component needs to be registered on the client is not as a
fall-back Todd. The CreateObject has to be able to convert the ProgID to a
ClsID via the local registry before talking to the remote machine. The EXE
is not invoked locally, unless you specifically ask for that. If this were
the problem, though, then I seem to remember there's a very specific error
return that you'd get. Unfortunately, I can't remember what it is.
dcomcnfg automatically creates an AppID for each ActiveX EXE. The GUID used
for this AppID is taken from the ClsID of the first class it finds in that
component. Hence, it can be a random choice. A common point of confusion is
that dcomcnfg doesn't list all the classes in your component. However, it
only needs to display one since the dcom settings apply to the whole EXE
rather than any specific class. Hence, whichever class is displayed is good
enough. It's just a bit confusing unless you know what it's trying to do. If
you don't get any classes displayed from your EXE at all then it points to a
registration problem. I'd then check the HKEY_CLASSES_ROOT on the remote
machine for the relevant ProgID, and cross-reference it with the
HKEY_CLASSES_ROOT\ClsID area to make sure that ProgID and ClsID are both
there and consistent.
If you want to avoid using the ProgID completely, then you could call
CreateObject with a moniker such as:
CreateObject ("new:{GUID}")
I'm not totally certain but I believe this should provide enough information
to start talking directly to the remote machine, and so avoid having to have
your EXE registered on the client machine simply to translate the ProgID.
Tony Proctor
> Thanks for taking the time to help.
>
[quoted text clipped - 75 lines]
> > >
> > > I'm at my whitt's end!