Paul,
>If I try and create the mtdll in an asp page the mtdll instantiates ok (I can return "hello world" from the mtdll for example) but when the mtdll tries to instantiate the com/exe I get "Message: OLE error code 0x80070005: Access is denied."
>
>I have made sure iusr_machinename has all priviledges for both the exe and dll.
Couple of things to check:
1) Are you sure that the MTDLL is running as iusr_machinename when you call it from the ASP page? Might be worthwhile to add a method to return the username to check that.
2) Since you are calling the EXE as a COM server, you may not have it configured correctly in DCOM Configuration. Once you are in DCOM Config (in Component Services), check the Security tab for Launch Permissions and Access Permissions. If they are set to default, change it and edit and add the username you need.
Also, check the Identity tab where you can set the user context that will be used by the EXE (you can have it run as a specific user that has rights to the data directory, etc). By default, it is Interactive User, which means whoever is logged on to the computer. You might not have to change this one -- I'd have to experiment a little to be sure.
I'm thinking that the Access or Launch permissions might be your problem (perhaps complicated by the MTDLL running as a different user than you think). Whether or not you added the MTDLL to COM+ can make a difference in the user context.