I think you misunderstand what automated testing is for. Tools like TestComplete are not made to act as a troubleshooting bench that you can use to diagnose problems at your clients. They are made so that you can design generic tests to make sure your code or UI works correctly. When you design your tests, you should not need access to the specific hardware or data that your client uses.
For your laser controller for example, the fact that the controller reads music properly is (or should be) irrelevant, the only thing you need to make sure of is that the proper commands are output from your application to the device. You don't need the actual device for that.
For your Exchange app, you only need an Exchange server and database, not necessarily the specific one from your client.
For android dev, you only need an emulator.
I manage a bank of 45 VMs that runs about 4500 tests continuously on our app, and not one of those tests requires a specific machine to run on. You just need to rethink your testing strategy.