El nombre del ejecutable lo puedes obtener de la línea de comandos:
int main( int argc, char* argv[] ) {
for ( int i = 0; i < argc; i++ ) {
cout << argv[ i ] << endl;
}
return 0;
}
En argv[ 0 ] siempre tienes la ruta completa del ejecutable, si sólo quieres el nombre del ejecutable recorrerías hacia atrás hasta encontrar el primer indicador de directorio/carpeta (\ en Windows, / en otros como Linux/Unix).
Si trabajas en Windows, la función GetCommandLine te devuelve la línea de comandos y de allí podrías extraer el nombre del ejecutable, aunque creo que debe existir una función en la API de Windows que ya haga lo que quieres
.
Saludos,
JJ (Geo).