Newsgroup: it.comp.lang.visual-basic
Titolo: [?][2][VB6] Programmi con scadenza a tempo

'Questo è il pezzo della mail che ho inviato una setimana fà al
'newsgroup , ma nessuno mi ha risposto, così la ri-posto
'secondo le regole del ManifestoUfficiale.
'Chiarimenti Non dovete per forza fare in modo che tutti i
'punti della lettera si possano fare, ma qualsiasi idea che
'avete postatela. Ciao e grazie a tutti quelli che mi aiuteranno!
--------- INIZIO MAIL
Ciaooo!!
è la prima volta che posto in questo fantastico newsgroup, e volevo porvi
una domanda:
In VB6 come devo fare per far si che il prog registra nel sys reg la data
d'installazione, ed inoltre memorizza una stringa nascosta(mooolto strana e
lunga, in modo da essere difficilmente individuata e cancellata) con un
valore boolean vero ( = a 1) .
A questo punto, il prog ogni volta che viene avviato vede la stringa nel sys
reg, se è uguale a 1, parte la schermata che informa che mancano tot giorni
alla scadenza.
poi, quando il programma sarà scaduto, non si avvierà più la solità
schermata ma una form dove richiede il serial-key.
non mi interessano algoritmi complessi per creare il serial-key, ma vorrei
fare così: mi invento una serie di codici della stessa lungezza, e ne scrivo
uno per riga in un file .txt, a questo punto, il prog confronta il codice
che immette l'utente, e se è uguale ad uno di quelli nel file di testo,
cancella il codice nel file di testo(così non può venire utilizzato due
volte) e setta la chiave segreta nel reg sys a false(= a 0) , in questo
modo, quando il programma si riavvia, funziona normalmente senza più
visualizzare la form.
Per fare in modo che non si effettuano modifice all'orologio di sistema, il
programma calcola i giorni uno per uno, fino ad arrivare all'ultimo giorni,
così, le modifiche all'orologio non servirebbero.
PeR favore aiutatemi!!
GRAzie in anticipo.
(potete anche contattarmi x e-mail)
CIAOOO
----FINE MAIL
--
Carmine
Webmaster di The Total Site (
http://www.tekkentag.altervista.org/
 )
giuseppe.giang...@tin.it
 (Togli la scritta NOSPAM)
Account Messenger: 
thetot...@msn.com

 form.
Puoi semplicemente basarti sul seriale del disco.

 Puoi semplicemente basarti sul seriale del disco.
Quoto.
bye
-- 
Gestione Ottica - Gestionale per Ottici e Programmi Gratuiti su:
http://www.nicolaottomano.it
Sinapsi Antispam. Antispam Gratuito.
http://www.nicolaottomano.it/sinapsi.htm
email spamtrap: 
spam...@nicolaottomano.it

 > Puoi semplicemente basarti sul seriale del disco.
Già, infatti lo avevo pensato anchiò, ma poi se si cambia Disk-Drive?
Grazie, ma se lo si può fare un pò + semplice...
(... scusate per la mia ignoranza, ma visto che in vb nn sono esperto... nn
mi avete detto molto chiaramente la
     parte principale, come faccio a fare il timer dei giorni?... )
Grazie 1.000.000.000.000 X 1.000.000.000.000 elevato alla 1000esima.
Grazie!
Ciao! ^__^

>>> vorrei fare cosě: mi invento una serie di codici della stessa
serialeHD XOR tuapw
presso:
http://www.villaceleste.it/html/Spippolamenti/index.asp
nessuna memorizzazione....quando vuoi fare un check esegui il test.
Tuapw puň essere a tal fine ricavato da tutto quello che vuoi...i primi 10
byte di un exe...di un registro...
di quello che vuoi
-- 
------------------------------------------------
Il Wodkino Nazionale č a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel bestiario!
:-)

 Il Wodkino Nazionale è a : 
www.martek.it


 2)come si scrive un file .ini ?
Carmine accetta un consiglio da amico. Prima di spippolare con le API, 
seriali e algoritmi vari ti consiglio di imparare le basi di VB 
altrimenti non arrivi da nessuna parte.


 2)come si scrive un file .ini ?
1) Il timer? Cosa intendi, calcolare la differenza tra il giorno e oggi? Usa
la funzione DateDiff.
2) Per scrivere e leggere i file INI ho un paio di funzioni a casa, basate
sulle API GetPrivateProfileString e WritePrivateProfileString, appena posso
te le posto.
Inoltre ti posto il mio piccolo consiglio, visto che te ne hanno già dati
tanti buoni: Non scrivere date. In fase di installazione, crei un file INI
da non cancellare. La data di creazione diventa un attributo del file.
Quando fai il controllo del giorno attuale, comparalo con questa data, che
non può essere modificata dall'utente, e non cambia nemmeno se l'orologio di
sistema viene tirato indietro. Anzi, puoi anche accorgerti che l'utente ha
tirato indietro l'orologio:
If DataDiCreazione > Now() then
     ' (oppure testi il segno di DateDiff, se negativo eccetera eccetera...)
    ' l'utente ha tirato indietro l'orologio
    MsgBox "Birichino, birichino!!"
End If
Per beccare la data di creazione di in file, c'è un'altra API: GetFileTime.
Butta un occhio qui:
http://www.mentalis.org/apilist/GetFileTime.shtml
Spero sia utile. Ciao
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 non può essere modificata dall'utente, 
Se l'utente fosse qualcuno del ng che si e` letto questi due
articoli, pero`...
http://vbnet.mvps.org/index.html?code/fileapi/folderdatetime.htm
http://vbnet.mvps.org/index.html?code/fileapi/filedatetime.htm
-- 
ciao, hal

 articoli, pero`...
... dovrebbe comunque conoscere il nome del file INI segreto, che per
brevità chiameremo win32mso.dll, e che però a quel punto potrebbe
addirittura essere semplicemente copiato su un floppy, eliminato dalla
directory (sconosciuta) e poi ri-copiato dal floppy - quindi con una nuova
data di creazione - anche senza aver letto i due (utilissimi) articoli di
cui sopra.
Insomma, il concetto non è quello di rendere impossibile lo sblocco del
programma, ma renderlo talmente difficoltoso che uno (la maggior parte degli
utenti) viene scoraggiato anche dal tentare. Se poi qualcuno alla fine ci
riesce ..., buon per lui, userà il mio software gratis, io cerco di fare in
modo che siano in pochi quelli che ci riescono.
Se non posso permettermi neanche uno che usi il software gratis devo
utilizzare un altro metodo, definitivo, ma non credo che sia possibile in
modo gratuito. L'unico modo definitivo che mi viene in mente è una chiave
hardware.
Perfino un numero da cento cifre da passare via web entro 15 giorni mi pare
che sia stato aggirato, noh?


Grazie :-))))))
-------
yronium ha scritto:
1) Il timer? Cosa intendi, calcolare la differenza tra il giorno e oggi? Usa
la funzione DateDiff.
2) Per scrivere e leggere i file INI ho un paio di funzioni a casa, basate
sulle API GetPrivateProfileString e WritePrivateProfileString, appena posso
te le posto.
Inoltre ti posto il mio piccolo consiglio, visto che te ne hanno già dati
tanti buoni: Non scrivere date. In fase di installazione, crei un file INI
da non cancellare. La data di creazione diventa un attributo del file.
Quando fai il controllo del giorno attuale, comparalo con questa data, che
non può essere modificata dall'utente, e non cambia nemmeno se l'orologio di
sistema viene tirato indietro. Anzi, puoi anche accorgerti che l'utente ha
tirato indietro l'orologio:
If DataDiCreazione > Now() then
     ' (oppure testi il segno di DateDiff, se negativo eccetera eccetera...)
    ' l'utente ha tirato indietro l'orologio
    MsgBox "Birichino, birichino!!"
End If
Per beccare la data di creazione di in file, c'è un'altra API: GetFileTime.
Butta un occhio qui:
http://www.mentalis.org/apilist/GetFileTime.shtml
Spero sia utile. Ciao
---------
Ecco, è qui che volevo arrivare!
adesso, potreste spiegarmi come si scrive un file .INI, non lo ho capito
molto bene.
il timer invece tutto ok,
P.s.: se qualcuno è così gentile da mandarmi x e-mail un esempio...
Grazie!!!
(e-mail 
giuseppe.giang...@tin.it
 (togli la parola NOSPAM))
ciao!
--

 .... dovrebbe comunque conoscere il nome del file INI segreto, 
magari conosce il filemonitor di sysinternals ;-)
-- 
ciao, hal

 ha scritto nel messaggio
news:lGqce.16836$ms1....@tornado.fastwebnet.it...


 molto bene.
Allora, copia le funzioni seguenti in un modulo. I file INI sono costituiti
da sezioni, i cui nomi vengono scritti tra parentesi quadre nel file
(magari, aprine uno con Notepad per vedere come è fatto).
Nelle due funzioni devi specificare la sezione, e la proprietà da leggere in
quella sezione.
Un'ultima cosa, ti rivelo un piccolo segreto (che però tanti sanno già): i
file INI non devono necessariamente avere estensione .ini, cioè puoi crearti
anche il tuo file di impostazioni chiamandolo config.vxd, config.dll,
config.mdb, ecc. Non usare il nome di un file già esistente, o lo
sovrascriverai.
' funzioni API da utilizzare per leggere/scrivere i file INI
Private Declare Function GetPrivateProfileString Lib _
    "kernel32" Alias "GetPrivateProfileStringA" _
    (ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, ByVal lpDefault As String, _
    ByVal lpReturnedString As String, _
    ByVal nSize As Long, ByVal lpFileName As _
String) As Long
Private Declare Function WritePrivateProfileString Lib _
    "kernel32" Alias "WritePrivateProfileStringA" _
    (ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, ByVal lpString As Any, _
    ByVal lpFileName As String) As Long
' ATTENZIONE: questa funzione utilizza un buffer che ha un limite,
' specificato dall'istruzione strText = Space(buffer).
' Ogni altro carattere nella riga del file .ini verrà ELIMINATO.
' Se si pensa che ciò possa tagliare parte delle informazioni da leggere,
' aumentare l'argomento della funzione Space().
Public Function ReadINI(strSection As String, strKeyName As String, _
        ByVal strFileName As String, Optional lStringBuffer As Long = 255, _
        Optional iniDirPathName As String) As String
    Dim intLen As Long
    Dim strText As String, strIniFile As String
    ' definisce la directory di default del file INI
    If iniDirPathName = "" Then iniDirPathName = App.Path
    ' elimina il carattere backslash finale dal path
    If Right$(iniDirPathName, 1) = "\" Then
        Mid$(iniDirPathName, Len(iniDirPathName), 1) = Space$(1)
        iniDirPathName = RTrim$(iniDirPathName)
    End If
    ' costruisce il path completo del file INI
    strIniFile = iniDirPathName & "\" & strFileName
    ' legge le informazioni nel file, e controlla che non ci siano errori
    strText = Space(lStringBuffer) ' BUFFER
    intLen = GetPrivateProfileString(strSection, strKeyName, "", _
        strText, Len(strText), strIniFile)
    If intLen > -1 Then
        strText = Left(strText, intLen)
    Else
        MsgBox "Errore nel file INI"
        End
    End If
    ReadINI = strText
' USO: MiaProprietà = ReadINI(Sezione, NomeDellaProprietà, NomeDelFileIni,
buffer)
' ESEMPIO: Me.FontName = ReadINI("Font", "FontName", "Banner.ini", 255)
End Function
' scrive un file INI nella stessa directory del file .exe
' se il file INI non esiste, ne crea uno nuovo
' ATTENZIONE: quando viene eseguita dall'IDE di VB, il file exe è
' il VB6.exe, e il file INI viene creato nella directory di VB6.exe
Public Sub WriteINI(strSection As String, strKeyName As String, _
        strText As String, strFileName As String, Optional iniDirPathName As String)
    Dim intLen As Integer
    Dim strIniFile As String
    ' definisce la directory di default del file INI
    If iniDirPathName = "" Then iniDirPathName = App.Path
    ' elimina il carattere backslash finale dal path
    If Right$(iniDirPathName, 1) = "\" Then
        Mid$(iniDirPathName, Len(iniDirPathName), 1) = Space$(1)
        iniDirPathName = RTrim$(iniDirPathName)
    End If
    ' costruisce il path completo del file INI
    strIniFile = iniDirPathName & "\" & strFileName
    ' scrive nel file INI
    intLen = WritePrivateProfileString(strSection, strKeyName, _
        strText, strIniFile)
' USO: Call WriteINI(Sezione, NomeDellaProprietà, ValoreDaScrivere,
NomeDelFileIni)
' ESEMPIO: Call WriteINI("Font", "FontName", Me.FontName, "Banner.ini")
End Sub
Spero ti sia utile. Buon lavoro.


 magari conosce il filemonitor di sysinternals ;-)
Insomma, hal! Basta rivelare i miei trucchetti! Se la smetti, ti scrivo
un'e-mail privata con il nome del MIO file segreto. (PS: chi diamine č
filemonitor di sysinternals? Io conosco Pascale 'e Trecase, detto 'O
Malamente: č piů grosso di lui?)


 Malamente: č piů grosso di lui?)
Combinato a regmon permette di scoprire molte cose, prima
ancora di mettere mano al debugger.
-- 
ciao, hal

 ancora di mettere mano al debugger.
...due strumenti che non adopero. Mi sono perso molto?


 ....due strumenti che non adopero. Mi sono perso molto?
dipende dal mestiere che fai, a me servono parecchio.
-- 
ciao, hal

 dipende dal mestiere che fai, a me servono parecchio.
pensavo che dipendesse dal linguaggio che uso. Comunque faccio l'insegnante
di laboratorio, a volte faccio un po' di assistenza, ho l'hobby di VB e a
volte faccio dei programmi personalizzati.
Pensi che Regmon, Debugger e Filemonitor potrebbero migliorarmi il lavoro?
Se si, come, e soprattutto dove si trovano?


 Se si, come, e soprattutto dove si trovano?
www.sysinternals.com
Li' scrive gente che conosce windows davvero bene.
-- 
ciao, hal

 Li' scrive gente che conosce windows davvero bene.
Ora ci butto un occhio. Grazie per il link. Non credo di averne bisogno
oggi, ma non si sa mai.


 ha scritto nel messaggio
news:151Z41Z177Z110Y...@usenet.libero.it...


 ancora di mettere mano al debugger.
anche ..
regshot (regshot161e5)
http://www.pcworld.com/downloads/file_description/0,fid,19540,00.asp
http://www.snapfiles.com/get/regshot.html
.... allora ....  :-)
--
Fosco

 ...due strumenti che non adopero. Mi sono perso molto?
IMO si .. devi almeno sapere che strumenti adopera
un tuo eventuale avversario per combatterli
io mi farei un giro :
http://www.sysinternals.com/
http://www.sysinternals.com/ntw2k/freeware/
--
Fosco

 .... allora ....  :-)
Per le (dis)installazioni, consiglio caldamente Inctrl5. Da questo
punto di vista è un capolavoro: fa la stessa cosa di RegShot,
ma tiene sotto controllo anche i vari .INI di sistema, fa l'elenco
dei file installati, eccetera.
Bye, G.

 bisogno oggi, ma non si sa mai.
Se non ne hai bisogno oggi, ti serviranno domani... fědati :-).
Bye, G.

 dei file installati, eccetera.
Confermo!
Me lo avevi fatto conoscere tu ed e` ottimo: praticamente
fotografa prima e dopo e puoi fare dei rollback precisi.
-- 
ciao, hal

 dei file installati, eccetera.
Si  .. e se si ha ancora un vecchio win9x consiglio anche
UM >>  Uninstal Manager se qualcuno e' interessato e non
lo trova faccia un fischio che quando ritorno sul Win98
posto il link
-- 
Fosco