PDA

View Full Version : domanda programmazione



dariuz
27th June 2007, 18:26
premettendo che l'unico accenno di programmazione che ho è l'utilerrimo fortran77 che mi insegnano in uni :nod:
volevo creare un programmino per fare 2 cavolate con dei file ( applicare un fix ad un gioco :nod: ) e invece che farlo a mano ( tempo 5secondi :sneer:) sto sbattendo la testa per farlo con un programmino.

il suddetto programma è un file bat che al momento fa cosi :

rename C:\blabla\file.dll file.dll.bak
copy *.dll C:\blabla\
copy *.exe C:\blabla\
del C:\blabla\file.dll.bak

sarebbe tutto perfetto se nn fosse che non puo eseguire l'ultima riga in quanto il file è in uso all'avvio di winzoz(però me lo fa rinonimare) e quindi dovrei prima riavviare il pc e poi cancellarlo(perke al riavvio fa partire il file farloccco che ha il nome di quello vero).
ora il punto su cui sto sbattendo la testa è : esiste un modo per dirgli riavvia il pc e poi cancella quel file / cancella quel file appena il pc è riavviato ?????????????????????????????
o è semplicemente na roba troppo complessa per essere fatta con un semplice .bat ?

ammesso che si possa risolvere poi intendevo "compattare" il tutto ( fila da sostituire file.bat iconcina) in un file .exe cosi da avere un file solo
il punto è che ancora nn mi son letto come funzionano gli exe perchè mi son bloccato qui sopra quindi nn so se sia na cosa realizzabile :P

NoeX
27th June 2007, 18:28
fallo in visual basic, non hai neanche bisogno di riavviare

Mosaik
27th June 2007, 18:29
Ehm spe c'e' qualcosa che non mi torna...
Come fa ad essere in uso il file BAK che hai creato 2 secondi prima? :scratch:

Forse tu vuoi cancellare la DLL iniziale?

dariuz
27th June 2007, 18:36
fallo in visual basic, non hai neanche bisogno di riavviare
devo riavviare per forza perche è windows che tiene in uso il file rendendolo incancellabile .... credo :awk:

Ehm spe c'e' qualcosa che non mi torna...
Come fa ad essere in uso il file BAK che hai creato 2 secondi prima? :scratch:
Forse tu vuoi cancellare la DLL iniziale?
allora io ho questo file .dll che è in uso , pero me lo fa rinonimare , quindi io lo rinonimo in dll.bak e ci piazzo la mia dll.
ora anche se l'ho rinonimato il file rimane sempre in uso fintanto che nn riavvio il pc , e quando riparte lui va a prendersi la mia dll permettendomi cosi di cancellare l'altra che ho rinonimato

Mosaik
27th June 2007, 22:12
Ma stai cercando di modificare un dll di windows?
Perche' in questo caso c'e' un sistema di protezione che sostituisce la DLL se la trova "corrotta"

Jarsil
27th June 2007, 22:34
La possibilità esiste ma non col punto bat, o meglio, dovresti far troppa roba, per il discorso di farlo al riavvio esiste il modo tramite registro di fare partire una applicazione in "RunOnce" mode, ovvero solo un avvio poi basta...

Se però la dll che rinomini è solo flaggata ma non effettivamente usata, se non sbaglio puoi (e qui dal bat funge) deregistrarla col comando regsvr32 con un flag che ora non ricordo...

Edit: regsvr32 /u nomedll

dariuz
28th June 2007, 12:26
per il discorso di farlo al riavvio esiste il modo tramite registro di fare partire una applicazione in "RunOnce" mode, ovvero solo un avvio poi basta...

la dll è efettivamente in uso quindi nn basta cambiare la flag.... cmq col metodo quotato ci son riuscito :metal:
semplicemente faccio eseguire dal .bat un file .reg che aggiunge nel registro le istruzione del RunOnce cosi funziona tutto :banana:
ora mi googolizzo come funzionano gl iexe cosi vedo come "compattare" tutti in un file

San Vegeta
28th June 2007, 12:42
premettendo che l'unico accenno di programmazione che ho è l'utilerrimo fortran77 che mi insegnano in uni :nod:
volevo creare un programmino per fare 2 cavolate con dei file ( applicare un fix ad un gioco :nod: ) e invece che farlo a mano ( tempo 5secondi :sneer:) sto sbattendo la testa per farlo con un programmino.


applicare dei fix a un programma compilato di solito non è per niente banale :elfhat:



il suddetto programma è un file bat che al momento fa cosi :

rename C:\blabla\file.dll file.dll.bak
copy *.dll C:\blabla\
copy *.exe C:\blabla\
del C:\blabla\file.dll.bak



sarà che sono pignolo, ma rinomini un file che poi vai a cancellare... non è una cosa propriamente logica...



sarebbe tutto perfetto se nn fosse che non puo eseguire l'ultima riga in quanto il file è in uso all'avvio di winzoz(però me lo fa rinonimare) e quindi dovrei prima riavviare il pc e poi cancellarlo(perke al riavvio fa partire il file farloccco che ha il nome di quello vero).
ora il punto su cui sto sbattendo la testa è : esiste un modo per dirgli riavvia il pc e poi cancella quel file / cancella quel file appena il pc è riavviato ?????????????????????????????
o è semplicemente na roba troppo complessa per essere fatta con un semplice .bat ?


come hanno già detto, registry e runonce, o un comando nel file autoexec.bat, che credo venga eseguito anche nei sistemi operativi moderni, se presente. cmq RunOnce è mejo



ammesso che si possa risolvere poi intendevo "compattare" il tutto ( fila da sostituire file.bat iconcina) in un file .exe cosi da avere un file solo
il punto è che ancora nn mi son letto come funzionano gli exe perchè mi son bloccato qui sopra quindi nn so se sia na cosa realizzabile :P

un file .bat non è un programma ma uno script interpretato dalla shell dei comandi (che altri non è che un programma che riceve in input dei comandi)
ergo non lo "compatti" in un exe. Al massimo, puoi fare un eseguibile che richiami il file .bat


poi, vorrei aggiungere che rinonimare non è corretto, si scrive rinominare, dall'italianizzazione di rename.

dariuz
28th June 2007, 13:29
poi, vorrei aggiungere che rinonimare non è corretto, si scrive rinominare, dall'italianizzazione di rename.
:rain: hai ragione :rain:


sarà che sono pignolo, ma rinomini un file che poi vai a cancellare... non è una cosa propriamente logica...

cerco di spiegarmi meglio
cè questa dll che quando il pc è acceso è sempre in uso e nn puo essere cancellata ma puo pero essere rinominata.
io voglio sostituire questa dll con una "similile" in mio possesso , ma per falro devo sbarazzarmi di quella gia esistente ed allo stesso tempo fargliela trovare all'avvio perke se no se la ricrea lui

quindi io vado a rinominare la dll esistente (in uso dal pc) con un nome random e piazzando la mia dll al suo posto.
cosi facendo la dll rinominata rimane sempre in uso fintanto che non riavvio il pc , e quando questo si riaccende va a cercarsi la dll (col nome originale) e cosi si carica quella che gli ho messo , lasciandomi quindi libero di cancellare l'altra

San Vegeta
28th June 2007, 14:03
però non serve un programma per farlo, è un'operazione che fai una volta sola... finchè la nuova dll sta lì il programma è contento e non rimette quella vecchia

dariuz
28th June 2007, 14:29
no infatti era solo uno sfizio che volevo toglermi riuscire a farlo ;)