Quindi è dalla pagina html che nasce tutto, giusto? L'utente clicca sul bottone submit viene generato il file e lanciato l'eseguibile.
Xares, se non sbaglio, ha visto la cosa al contrario: Lanci l'eseguibile che poi chiama la pagina php.
Se è il primo il tuo caso, allora la tua soluzione è quella più semplice da implementare e se funziona io la lascerei così...anche perchè altre soluzioni che vedo sono queste:
1. Nella pagina php usa la popen/proc_open per lanciare l'eseguibile. Scrivi nello stdin (che ottieni dalle suddette funzioni) il comando/testo che vuoi passare e se ti serve prendi l'output (mi pare che però è necessario la proc_open per ottenere lo stdout). Chiaramente il tuo eseguibile dovrà leggere dallo standard input invece che da file
2. Abiliti nel tuo web server l'esecuzione degli eseguibili tramite cgi, così salti php. Se non sbaglio anche in questo caso devi leggere lo stdin per le variabili post, per quelle get devi leggere le variabili di ambiente (QUERY_STRING). Inoltre devi fornire una risposta per il browser (scrivere nello stdout la risposta http) visto che non hai più un "intermediario" come php
Lato visual basic non saprei aiutarti...dovresti chiedere nella sezione programmazione