The mutex way is the one of the easiest.
In your launcher you call
CreateMutex( "MyGunzLauncher", FALSE, NULL );
then you starts the Gunz.exe via your custom launcher, that Gunz.exe MUST have disabled the serialkey stuff, and you in your launcher MUST wait like 5 secs after you have CreateProcess'ed your Gunz.exe.
In your GunZ.exe you must do a codecave and call
OpenMutex( MUTEX_ALL_ACCESS, FALSE, "MyGunzLauncher" ) and check the return value of the function, if its 0, your exe doesnt have been launched from your launcher, if its different than 0, your exe have been launched via your launcher.