What you probably want is Reg-Free COM. Anything else is going to require admin rights to properly self-register those libraries when the VB runtime finds them plooed in the app directory. Never a good thing even when it works.
Sadly Microsoft enver provided tooling for this even though the feature was developed specifically to support VB6 applications. So you have to either fiddle with .Net tools or find one of the few 3rd party tools supporting it.
In essence your program requires isolation manifests. In many cases you can bypass separate assembly manifests and shove everything into the application manifest. The trick of course is creating proper manifests, and that's where the tools come in.
Here's a sample of one for a program I have that uses several of the same libraries you are using:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<!-- Make My Manifest 0.10.306 -->
<assemblyIdentity name="DeMoCo.DataGrid" processorArchitecture="X86" type="win32" version="1.0.0.0" />
<file name="deps\MSADODC.OCX">
<typelib tlbid="{67397AA1-7FB1-11D0-B148-00A0C922E820}" version="6.0" flags="control" helpdir="" />
<comClass clsid="{67397AA3-7FB1-11D0-B148-00A0C922E820}" tlbid="{67397AA1-7FB1-11D0-B148-00A0C922E820}" threadingModel="Apartment" progid="MSAdodcLib.Adodc.6" miscStatusIcon="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,nouiactivate,alignable,setclientsitefirst" description="Microsoft ADO Data Control 6.0 (SP6) (OLEDB)" />
</file>
<file name="deps\MSStdFmt.dll">
<typelib tlbid="{6B263850-900B-11D0-9484-00A0C91110ED}" version="1.0" flags="" helpdir="" />
<comClass clsid="{2B11E9B0-9F09-11D0-9484-00A0C91110ED}" tlbid="{6B263850-900B-11D0-9484-00A0C91110ED}" threadingModel="Apartment" progid="MSSTDFMT.StdDataValue.1" description="StdDataValue Object" />
<comClass clsid="{6D835690-900B-11D0-9484-00A0C91110ED}" tlbid="{6B263850-900B-11D0-9484-00A0C91110ED}" threadingModel="Apartment" progid="MSSTDFMT.StdDataFormat.1" description="StdDataFormat Object" />
<comClass clsid="{99FF4677-FFC3-11D0-BD02-00C04FC2FB86}" tlbid="{6B263850-900B-11D0-9484-00A0C91110ED}" threadingModel="Apartment" progid="MSSTDFMT.StdDataFormats.1" description="StdDataFormats Object" />
</file>
<file name="deps\MSDATGRD.OCX">
<typelib tlbid="{CDE57A40-8B86-11D0-B3C6-00A0C90AEA82}" version="1.0" flags="control" helpdir="" />
<comClass clsid="{CDE57A43-8B86-11D0-B3C6-00A0C90AEA82}" tlbid="{CDE57A40-8B86-11D0-B3C6-00A0C90AEA82}" threadingModel="Apartment" progid="MSDataGridLib.DataGrid.1" miscStatusIcon="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,alignable,setclientsitefirst" description="Microsoft DataGrid Control 6.0 (SP6) (OLEDB)" />
</file>
<file name="deps\richtx32.ocx">
<typelib tlbid="{3B7C8863-D78F-101B-B9B5-04021C009402}" version="1.2" flags="control" helpdir="" />
<comClass clsid="{3B7C8860-D78F-101B-B9B5-04021C009402}" tlbid="{3B7C8863-D78F-101B-B9B5-04021C009402}" threadingModel="Apartment" progid="RICHTEXT.RichtextCtrl.1" miscStatusIcon="recomposeonresize,cantlinkinside,insideout,activatewhenvisible,setclientsitefirst" description="Microsoft Rich Textbox Control 6.0 (SP6)" />
</file>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
But keep in mind this is one of those "Not For Blind Kids" technologies, much like the Mainway Toys Invisible Pedestrian Halloween costume. You need to know what you're doing.