Newsgroup: it.comp.lang.visual-basic
Titolo: automodifica codice

salve a tutti
avrei bisogno che il mio programma automodificasse certe variabili del 
suo codice, contenute nello stesso .exe che viene avviato. Non è 
possibile utilizzare file txt o dat di supporto.
potete aiutarmi??
grazie a tutti

una volta sotto dos si usava modificare l'exe...pacchissimo
perché non è possibile usare altri file?
Un ini? (all'avvio leggi nell'ini, se quelle var sono indicati usi quel
valore altrimenti quello di default)

é già, il prog deve essere composto solo da un eseguibile ;(
come dovrei utilizzarlo quel .ini? voglio dire...oltre all eseguibile 
l'utente dovrebbe avere un .ini da cui leggere le var?
scusa, ma è che sono un po un newbie ;)
grazie per la risp!
ciao


 ha scritto nel messaggio
news:3D6CCAE5...@tin.it...


forse in questo caso è più semplice l'ini: con 2-3 apri ci fai tutto
(crei-modifichi-cancelli voci); scrive lì i valori, all'avvio li legge e li
imposta; se non esiste il file lo crea...
sul sito comune dovrebbe esserci un esempio per gestire ini (comunque con
google trovi di tutto di più)

 ini.....in qualsiasi caso.
Il problema di dimenticare l'ini nel pacchetto di installazione è un
problema reale.
Altro problema, è quello di dover intervenire manualmente, all'interno del
file ini, per impostare dei parametri che non si vorrebbero lasciare
visibili.
Allo scopo, io ho creato un piccolo Exe, che non usa nient'altro che il
runtime di VB, e che allego al progetto.
Se, all'avvio, l'applicativo non trova il file ini o lo trova non completato
(ad esempio se non c'è una determinata chiave), comunica che la
configurazione del sistema non è completa e chiede di avviare il
"Configuratore".
Questo, non fa altro che chiedere all'utente di inserire i valori validi per
questa installazione, e li mette sul file ini applicando una determinata
crittografia.
In questo modo, il file ini se non c'è viene creato, e dopo che chi installa
ha eseguito la configurazione dell'ini (criptato), è possibile ad esempio
che venga eliminato l'exe del configuratore, e comunque non sarà possibile
per l'utente andare a sbirciare nell'ini per ricavarne password o altro.
Se l'utente modifica a mano il file ini, al primo riavvio l'applicativo se
ne accorge (la crittografia ritorna un errore), e occorre rieseguire la
configurazione usando il tool di configurazione, che ad esempio potrebbe
essere su un dischetto a disposizione del CED.
Ciao
Alberto

nel suo caso, da quel che ho capito, ha dei valori di default che possono
essere cambiati
Quindi il file ini non serve nell'installazione perché all'inizio hai solo
default (scritti nel sorgente); se poi questi valori cambiano (immagino
nell'exe) creerà l'ini e li scriverà...
Così ho capito, ovviamente dipende da come cambiano questi valori: se devono
essere diversi anche al primo avvio del programma (es. dipendenti da
hardware, ip o che so altro) allora quello che dici è sicuramente vero
perché deve avere l'ini iniziale.


Quest'ultimo punto è interessante, cosa fai un calcolo del CRC del file
cifrato per capire se e stata fatta una modifica?
DD

 é già, il prog deve essere composto solo da un eseguibile ;(
CUT
occhio a farlo con VB....niente controlli esterni...e l'accesso ai
dati?..non ne fai uso!usi file random?!
lo leghi ad un S.O.?
perchè se devi fare l'installazione...tanto vale che ti crei anche i tuoi
INI o KEY o file temporanei!
Se devi installarti qualche mega di mdac o runtime o qualche griglia o
treeview.... che vuoi che sia 1Kb di file !

 cifrato per capire se e stata fatta una modifica?
Non proprio.
In realtà, ogni riga del file Ini è composta da:
Parametro=Valore Checksum
e su questo applico una funzioncina di cript fatta in casa (che invento di
volta in volta). Ad esempio, tanto per farla facile, aumento di 2 i codici
Ascii delle posizioni pari e diminuisco di 1 i codici Ascii delle posizioni
dispari.
Poi sommo tutti i codici Ascii così ottenuti, moltiplico per qualcosa, e
genero una stringa contenente questo numero, e la metto alla fine della riga
come Checksum.
Di fatto, una cosa del tipo:
PASSWORD=PIPPO
diventa
R9IOVHG-RGRGG 12345
(ho inventato).
Per cui, se l'utente vuole intervenire manualmente, sicuramente almeno una
riga sarà non valida, e il sistema capirà che qualcosa è sbagliato.
Non mi piace l'uso di file binari o di altri metodi, perchè impedirebbero
l'assistenza via Mail.
Ad esempio, se l'utente ha nel file Ini il parametro PASSWORD=PIPPO,
ovviamente criptato, e per motivi vari deve diventare PASSWORD=PLUTO, con il
mio metodo posso generare la riga criptata nel mio ufficio, mandargliela per
e-Mail e dirgli di sostituirla alla precedente con il blocco note.
Ciao
Alberto

 Cosě ho capito
Il punto č questo: ogni volta che Acetone entra nel NG, i suoi post sono,
oltre che come al solito mal quotati, anche particolarmente ostici da
decifrare.
Ciao
Alberto

 ostici da decifrare.
Ecco il solito amministratore di internet f@scist@! :-)
Insomma! ;)

 
beh, a dire la verità non sn tanto newbie, scrivere nel reg so farlo...;)
ma il punto è che io ho un programma da spedire a un utente, e prima di 
farlo dovrei caambiare parti di codice secondo le sue preferenze, senza 
però scomodare il VB
grazie ancora!!!!

 l'assistenza via Mail.
Forse, pero eviterebbero l'incombenza di dover reiterare per ogni riga il
procedimento di cifratura.
E visto che si tratta di pochi Kb di file in genere......
Anche qui opinioni e abitudini...... :-)
Un Bel Thread davvero......
DD

 procedimento di cifratura.
La cifratura è una function, a cui passo la stringa in chiaro e mi torna la
scringa criptata. Viceversa, ho una function a cui passo la stringa criptata
e me la restituisce in chiaro, o "ERR" in caso di errore.
L'unica differenza è che invece di fare Print Stringa faccio Print
Cripta(Stringa)
Non è una grossa fatica.
Ciao
Alberto

 grazie ancora!!!!
SE CI RIESCI SENZA INSTALLARE NULLA DIMMELO ANCHE A ME!
Una soluzione me la aveva data Zanna? o Fibia? boh!che dentro un file
risorse puoi mettere anche un piccolo exe(o più di uno)..ricordo male?
però io faccio così:
A) il cliente vuole la sua personale disposizione dei campi?....aggiungi un
archivio configura (per non stare a impazzare un configura.mdb...o sei hai i
tuoi vecchi lavori usa file random ...fai tu!)
Dentro la chiave è.....NomeForm ....(io lascio l'uso di questo per le
griglie e poco altro ...la chiave mi diventa nomeform nomegriglia)
Un function si occupa di settare campi colonne colori posizioni e
quant'altro vuoi....se sei particolarmente masochista la tua form può TUTTA
essere descritta come record di una tabella!...Vantaggio? Enorme....quando
sti rompicoglioni ti dicono...mi allarga "Ragione Sociale"?....mi fa blu la
griglia?....mi mette prima CodFiscale e poi Il nome?
Svantaggio:
gestione in più...un minimo di elaborazione in più...comunque io ho le mie 4
function (1 per la griglia 1 per il form 1 per i campi 1 per associazioni e
robe strane(i combo/listbox che ognuno vuole caricati con l'ordine che vuole
come vuole  ...addirittura (ma lo ho sempre sconsigliato di fare)...se usi i
datacontrol puoi memorizzare i datasource e i database name (parlo di
DAO...in ADO lascio a te la slurperia di pensarci!) e diventa un parametro
anche i dati)
In pratica con un grande sforzo iniziale poi godi e vivi di rendita per un
bel po!
e  non è detto che sta roba sia appannaggio del cliente...molti miei
progetti hanno la gestione del database configura dentro l'applicazione...ma
protetta da password!...la roba mia la tocco io....
Pensaci un po...DRIIIN..."salve Wodkino vorrei la griglia blu e 2 campi in
più che mi erano sfuggiti"....u'n se pò!...."Dai modificamela..."
...NO!...."Pago!..."...mmmm vedo che posso fare ma è difficile ....gli invii
il configura.mdb nuovo ed ha le griglie blu....e la visualizzazione dei
campi nuovi....
Ma i campi nuovi?....
nelle mie app c'è un piccolo tool che in pratica è un DB.Execute...mettici
un pizzico di Sql..ho già detto tutto!per ADO!.....col dao si fa bene anche
col tabledefs et similia!
b) Vuoi attivare porzioni di codice?
spezza l'app in tanti exe
mah ! prova a vedere se nel file risorse metti exe diversi e li attivi a
seconda di un codice parlante?Boh ...non ho mai provato!
forse ti fai tante dll....e il programma le richiama a seconda dello schema
pesonale del cliente...
Ciauz!
:-)