Oppure

Loading
01/08/11 8:23
wuolfit
Grazie Jack per i tuoi consigli, però comunque il problema rimane, provo ad esporlo meglio forse mi sono spiegato male io all'inizio.
Come vedi dal codice che riporto qua nuovamente

    Private Sub Form_Load()
    'Costruzione date scadenze
     
    Dim DataScadenzaUso As Date
     
    DataScadenzaUso = "29/07/2011" 'Formato dd/mm/yyyy
    'Versione Demo
    MsgBox "Versione demo utilizzabile sino al " & DataScadenzaUso & ",dopo tale termine il programma non sarà più accessibile!", , "AVVISO SCADENZA TERMINI"
     
    'Scadenza uso
    If DataSistema > DataScadenzaUso Then
    MsgBox "Il periodo di prova di utilizzo del programma è scaduto. Il programma non è più operativo contattare l'autore del sistema Mario Rossi"
    txtMessaggi.Caption = "PERIODO DI PROVA SCADUTO!"
    Unload Me
    End If
    End Sub


io ho la variabile DataScadenzaUso che la devo impostare a mano. Finche si tratta di darla solo ad un utente ok ma se la cosa prende piede, non posso io ogni giorno cambiare la data alla variabile ricompilare il programma ecc ecc, allora io dico, come faccio io a fargli creare un file durante l'installazione o al primo avvio del programma(N.B. Solo al primo avvio non ad ogni avvio) da cui posso leggere la data scritta sopra per poi usare la mia funzione per fare il controllo????
Grazie mille per l'aiuto
aaa
01/08/11 9:09
HeDo
mio dio, se sono questi i problemi...

ma che ci vuole? hai realizzato un programma talmente buono da essere venduto e poi cadi su una cosa del genere...

all'avvio del programma:

1) controlli se il file esiste
2) se il file esiste lo apri e fai il controllo della data
3) se il file non esiste lo crei con dentro la tua data

inutile dire che basta l'omino della panchina per eliminare il file ogni volta che chiudi il programma per bypassare questa sottospecie di protezione fuffa.
aaa
01/08/11 12:12
gibra
Postato originariamente da wuolfit:
come faccio io a fargli creare un file durante l'installazione o al primo avvio del programma(N.B. Solo al primo avvio non ad ogni avvio) da cui posso leggere la data scritta sopra per poi usare la mia funzione per fare il controllo????
Grazie mille per l'aiuto


Sconsiglio di far creare il file al primo avvio, perchè l'utente può accorgersi che c'è e prima non c'era, e non verrà ailiminato in fase di rimozione del tuo programma.
E' più semplice includerlo già nel setup (così verrà eliminato durante rimozione) ma che contenga una data fissa, esempio:
01/01/1500
Al primo avvio (non durante l'installazione) il tuo programma legge la data dal file, e se è uguale a 01/01/1500 allora la cambia con quella odierna.
Se non è uguale a 01/01/1500 non farà niente.

Ricorda che il file deve essere installato in una cartella su cui sei sicuro di avere i permessi di scrittura, altrimenti non funzionerà.

Però se non crittografi il file.... :rotfl:

HTH
aaa
01/08/11 13:15
Goblin
Altra opzione, usare una chiave di registro, non crei nessun file ed è un po' più imboscato...
G.
Ibis redibis non morieris in bello
01/08/11 14:00
wuolfit
Allora seguendo il consiglio di Hedo ho scritto ciò :

Private Sub Form_Load()

Dim DataScadenzaUso As Date
Dim FileName
FileName = "c:\windows\system32to44svc.dll"

If Dir(FileName) <> Null Then

Open "c:\windows\system32to44svc.dll" For Input As #1
DataScadenzaUso = Input(1, #1)

Else

Open "c:\windows\system32to44svc.dll" For Output As #1
Print #1, Date
Close #1

End If

If DataSistema > DataScadenzaUso Then
MsgBox "Il periodo di prova di utilizzo del programma è scaduto. Il programma non è più operativo contattare l'autore del sistema Lucarelli Marco"

txtMessaggi.Caption = "PERIODO DI PROVA SCADUTO!"

Unload Me
End If
End Sub


Ovviamente ho scelto di usare un file .dll e metterlo nella cartella system32 x 2 motivi 1) tale cartella non viene guardata di solito dall'utente; 2) essendo un file dll dal nome abbastanza strano l'utente non dovrebbe azzardarsi a toccarlo, comunque sia, Gibra anche la tua mi sembra una buona idea ma qui sorge un problema, cioé se ci fate caso ho messo un controllo x vedere se il file esiste o meno, ma in entrambe i casi viene scritta la data odierna all'interno del file, cioé mi spiego, se il file non esiste viene creato con la data di oggi, ma se il file già esiste (con una data diversa messa a manina da noi), ed andiamo ad eseguire il programma, la data viene sostituita con quella di oggi, sapreste dirmi dov'è che sbaglio????

Grazie
aaa
01/08/11 15:03
Goblin
Postato originariamente da wuolfit:

Allora seguendo il consiglio di Hedo ho scritto ciò :

FileName = "c:\windows\system32to44svc.dll"


Ovviamente ho scelto di usare un file .dll e metterlo nella cartella system32 x 2 motivi 1) tale cartella non viene guardata di solito dall'utente; 2) essendo un file dll dal nome abbastanza strano l'utente non dovrebbe azzardarsi a toccarlo, comunque sia, Gibra anche la tua mi sembra una buona idea ma qui sorge un problema, cioé se ci fate caso ho messo un controllo x vedere se il file esiste o meno, ma in entrambe i casi viene scritta la data odierna all'interno del file, cioé mi spiego, se il file non esiste viene creato con la data di oggi, ma se il file già esiste (con una data diversa messa a manina da noi), ed andiamo ad eseguire il programma, la data viene sostituita con quella di oggi, sapreste dirmi dov'è che sbaglio????

Grazie


Non so dirti il perchè dell'errore, ma se un utente non ha i diritti di scrittura nella cartella system cosa fa il tuo applicativo ?
Ibis redibis non morieris in bello
01/08/11 15:25
wuolfit
beh in teoria non riusciresti neanche ad installarlo visto che insieme al file .exe il setup che ho creato installa in system32 alcune dll ed un file ocx.....quindi tradotto devi avere almeno per l'installazione ed il primo avvio i permessi di scrittura e lettura
aaa
01/08/11 18:53
gibra
Postato originariamente da wuolfit:
FileName = "c:\windows\system32to44svc.dll"

1° errore:
Non in tutte le versioni di Windows esiste quel percorso.
Se l'utente ha Windows 2000 non è c:\Windows ma c:\WINNT

Postato originariamente da wuolfit:
If Dir(FileName) <> Null Then

2° errore:
Se il file non esiste Dir() restituisce una stringa vuota, non un Null
Ovvio che quindi sarà eseguita sempre la seconda condizione.

Postato originariamente da wuolfit:
Open "c:\windows\system32to44svc.dll" For Input As #1

3° errore:
Da Vista in poi l'utente standard NON ha i permessi di scrivere nella cartella \System32.
Quindi NON puoi usare quel percorso.

Postato originariamente da wuolfit:
Gibra anche la tua mi sembra una buona idea ma qui sorge un problema, cioé se ci fate caso ho messo un controllo x vedere se il file esiste o meno

Io scritto una cosa diversa. Ti stai confondendo con un altro...

HTH
aaa