Alas, we don't have the source for all our dlls- one of the dlls is from our client.

@EvilSOB: I'm pretty sure we don't have any duplicates, but I'll double check. When you say that dlls are registered in windows, is this something we can check with a utility? i.e. can I look at the registry and see where it's running from?

We finally got this working (on all but one anomalous computer). Instead of dropping the dll in the top layer, we now put it in a sub-directory and then call LoadLibrary from our own dll in an initialization function that I call from main in SED. It's still unclear what the problem was, but it might have been a timing thing- A7 trying to load a number of dlls asynchronously and getting confused? We've still got to test on Vista, but it looks ok for now.

Thanks all for your support!