Buonasera a tutti, ho aggiunto un file exe nelle risorse del mio programma: vorrei che venga eseguito normalmente senza essere estratto dal mio exe ovviamente. Consigli?
Buonasera a tutti, ho aggiunto un file exe nelle risorse del mio programma: vorrei che venga eseguito normalmente senza essere estratto dal mio exe ovviamente. Consigli?
Consigli su cosa?
Devi usare le funzioni API LoadLibrary, FindResource, LoadResource..
Per qualsiasi problema, siamo qua..
Ciao![]()
ho fatto ricerca su google ma sinceramente non mi è chiara la situazione in vb.net come in altro codice... mi faresti un esempio? ho un file risorsa che si chiama xx.exe per esempio...
Perchè vorresti eseguire un file dalle risorse?
Cosa farebbe questo exe?![]()
I got the remedy
Voglio semplicemente proteggere un'applicazione: cioè voglio che venga effettuato un controllo licenza prima di eseguire il programma.
Non devo fare nulla di nocivo tranquillo!![]()
voglio solo che un programma (non creato da me, tipo notepad esempio) si apri solo in seguito ad un controllo di licenza. Tutto qui![]()
![]()
Non capisco perchè per verificare una licenza bisogna fare una operazione del genere.
Voglio dire, li fai fare il controllo della licenza al programma stesso.
I got the remedy
Premesso che condivido le perplessità di albgen, ti informo che ciò che vuoi realizzare non è molto semplice, ovvero eseguire l'eseguibile incorporato nelle risorse del tuo programma senza estrarlo: tutto potrebbe essere risolto in circa 3-4 righe di codice mediante la creazione di un file temporaneo.
Ricapitolando: considerato che le soluzioni (la tua e la mia) hanno complessità molto diverse (la mia è quasi banale..) e che a livello di funzionalità non cambia assolutamente niente, ti consiglio di agire così:
- crei un file temporaneo in cui indirizzi lo stream della risorsa eseguibile
- mandi in esecuzione l'eseguibile appena creato
- all'uscita dal programma creato, elimina il file temporaneo
Il codice per estrarre un qualsiasi file è questo:
Fammi saperecodice:Dim tuofile As String = Application.StartupPath & "\Xx.exe" 'mi sembra che tu lo abbia chiamato così Dim FS As System.IO.FileStream = New System.IO.FileStream(tuofile, IO.FileMode.Create) FS.Write(My.Resources.Xx, 0, my.Resources.Xx.Length)
PS : ho visto che non hai risposto ad una tua discussione di qualche giorno fa (sulla protezione software); sarebbe gentile e corretto che ci informassi sugli sviluppi di tale problema.
Ciao![]()
Mi permetto di aggiungiere che oggigiorno praticamente qualsiasi antivirus interpreta l'esecuzione di un eseguibile da una risorsa di un programma come azione nociva e per tanto la blocca. Il modo migliore e più veloce è quello che ti ha consigliato MdE200.
Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
Occhio per occhio uguale... occhio al quadrato
Innanzitutto grazie mille per il supporto offerto e il codice suggerito è molto valido. Per annullare tutte le perplessità di cosa avrei bisogno di fare in realtà spiego il mio reale problema: ho formattato un pc ed ho inserito sopra alcuni programmi. Io voglio che sia impossibile (O almeno difficile ) clonare il pc e utilizzare i programmi su qualsiasi altro pc. A tale scopo avevo pensato di far controllare ad ogni avvio di programma la chiave per la protezione. Sapete indicarmi meglio la strada da prendere?
PS: so' bene che qualsiasi cosa può essere inutile ma almeno voglio rendere la vita un po' difficile a chi è intenzionato ad utilizzare i programmi su altri pc.