One strategy I have used to run automated processes with Access is to use Command Line switches.
So to start up Access you use the Access program “MsAccess.exe”, usually with the full path to it, then use the database you are opening as an argument, and finally you can add a command line switch that can be seen by VBA using the “/cmd yourcommandhere” argument where yourcommandhere could be any string which will be returned by the VBA Command() function.
This would be a good way for the program itself to make sure your launcher was used to launch it.
If you program your launcher to open the app with a command flag that a regular user wouldn’t know about then you could check that flag using the Command() function. If that command isn’t there, you can inform your user: “Please open the program with the Launcher app located at: yourlocation\Launcher.bat” or something of the sort, and then promptly quit the app before it does any more initialization.
This would ensure that someone either needs to use your Launcher batch script or at least be saavy enough and willing to copy the batch file and modify it to do something other than what you wanted it to do.