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...