Gracias por sus respuestas.
Cuando abrimos un programa con doble click el que lo lanza es el explorer.exe y con el código que mencionan se puede checar que no sea lanzado de otra aplicacion, con una simple verificacion del P.I.D. del proceso padre. El problema es que a partir de Windows vista hay unas nuevas apis que permiten indicarle al proceso lanzado cual es tu proceso padre
Ejemplo, alguien puede crear algo que llamaremos "programa1" y con OpenProces abrir el explorer.exe para a su vez aplicarle los atributos y lanzar una nueva aplicación que llamaremos "programa2" indicando que su procesopadre es el explorer.exe, cuando en realidad es el "programa1". Lo anterior compromete la seguridad del "programa2" aunque protejamos nuestra aplicacion, porque con el "programa1" pueden modificar nuestro código en memoria.
Espero haberme explicado, ya que pretendo detectar esto cuando ha sido lanzado mi "programa2" por "programa1" y cuando en realidad por el explorer, algun rastro debe quedar de ello