scusa il ritardo... mi ero perso il tuo post...
ho visto la tua richiesta su Alground e mi sono ricordato...

Ti assicuro che il codice funziona. Prova a compilare semplicemente questo:

codice:
#include <stdio.h>
#include <string.h>

main(int argc, char *argv[]) 
{ 
 if (strcmp(argv[0],"prova")!=0) { printf("File rinominato [argv[0]=%s]!\n",argv[0]); exit(0); }

 printf("OK! File non rinominato!\n Qui prosegue il vero programma\n");

}
se l'exe si chiama prova.exe e lo lanci con
prova
ti stampa
OK! File non rinominato!
Qui prosegue il vero programma


altrimenti
File rinominato [argv[0]=nome file attuale]!
ed esce.

Ovviamente per essere totalmente funzionale deve essere migliorato.
se per caso lanci il prog con
prova.exe
deve funzionare lo stesso...
idem se lo lanci tramite percorso assoluto tipo:
c:\cartella\prova.exe
Qui argv[0] sarà "c:\cartella\prova.exe" ma deve funzionare lo stesso...
devi riuscire ad isolare il solo nome del file privo di percorso ed estensione....
il tutto deve essere anche indipendente dal case (su windows):

qui la versione definitiva:

codice:
#include <stdio.h>
#include <string.h>

main(int argc, char *argv[]) 
{
 char *p;
 
 p=strrchr(argv[0],'\\\');  // cerco ultima occorrenza di backslash
 
 if (p==NULL) p=argv[0];   // backslash non trovato
  else  p++;               // backslash trovato
 
 // p punta al nome del file depurato del path
  
 if ( (strcmpi(p,"prova")!=0) && (strcmpi(p,"prova.exe")!=0) ) 
         { printf("File rinominato!!\n"); exit(0); }   // rinominato->esco

 printf("OK! File non rinominato!\n Qui prosegue il vero programma\n");

}


a sto punto andrebbe spostato in programmazione...