Newsgroup: it.comp.appl.access
Titolo: proteggere mdb da copie su altri pc

ciao ragazzi, in questo momento il db in questione ha la protezione a
livello di utente, e all'avvio viene nascosta la finestra di access,
sostituita la barra menu predefinita e le barre degli strumenti standard,
disabilitati i tasti speciali access, ecc (tutto quanto appare in
"strumenti"->"avvio").
per impedire la copia del db su altri pc so che esistono diversi approci
(pensavo ad una protezione attraverso un codice da inserire dopo la copia
del db): per la vostra esperienza quale metodo mi consigliate?

 ha scritto nel messaggio
news:kDSte.13947$D7.3...@twister1.libero.it...

Sul sito comune c'č un esempio che sfrutta il numero seriale dell'HD.
SunRex


ciao SunRex, immagino tu ti riferisca all'esempio 6.89 "Come impedire la
copia degli
applicativi usando il numero seriale dell' hard disk"?
avendo installato accessXP sul mio pc, come suggerito da Giacomo Arena ho
importato la tabella"Chiave", la maschera "Menu Principale" e il modulo
"Modulo GetSerialNumber" in un nuovo db; infine ho aggiunto il riferimento a
Microsoft DAO 3.6 Object Library, spostandolo al secondo posto nell'elenco
dei riferimenti.
Purtroppo non sono in grado di completare la cosa: x l'idea che mi sono
fatto la function GetVolumeInformation estrae i dati dall'hdd, e la function
GetSerialNumber genera il numero seriale, sfruttando i dati di
GetVolumeInformation, per "registrare" il db, numero seriale che dovrebbe
venire inserito nella tabella "Chiave" (dove già esiste un codice inserito).
se apro la maschera "Menu Principale" il codice associato all'evento
SuApertura verifica che il codice contenuto nella tabella "Chiave"
corrisponda a quello ricavato da GetSerialNumber.
Fino a qui ho capito bene? A questo punto cosa dovrei fare?
grazie per l'aiuto che mi vorrai dare, e scusa la mia pedanteria, ma non
posso certo definirmi un conoscitore di codice (e più di tanto neppure di
access)!..
em.an

 ha scritto nel messaggio
news:BzVte.14569$yM4.2...@twister2.libero.it...

Ti lanci la funzione da sola da un modulo e ti leggi il seriale dell'HD.Lo
salvi nella tabella e poi
ogni volta che il programma parte se lo va a leggere.Cioè la prima volta lo
deve leggere
e salvarlo da qualche parte.Occhio che se re installano la macchina il
seriale cambia.
SunRex


ciao sunrex, seguendo le tue dritte ho creato una maschera non associata
dotata di bottone; una volta premuto, questo genera una msgbox che mi legge
il seriale, me lo segno e vado a copiarlo nella tabella Chiavi, e tutto
funziona a dovere. la sub a cui il bottone fa riferimento č il seguente:
Sub ShowSerNum()
MsgBox "serial number:" & GetSerialNumber & ".", vbInformation, "MediDB"
End Sub
il punto č questo: come posso fare per consentire all'utente finale di
leggere e mi inviarmi le informazioni con le quali poi *io* genero il
seriale da ri-mandargli per l'inserimento? in pratica vorrei evitare di
dover andare di persona ad eseguire il riconoscimento e l'autenticazione,
scindendo la procedura in 2 passaggi.. č una cosa sensata, o dovrei
procedere in altro modo?

 ha scritto nel messaggio
news:0r8ue.15697$yM4.2...@twister2.libero.it...

Io sul mandare messaggi da access con e-mail sono un pippone.
Io farei tipo la frm di Northwind che ha la check su non mostrare questa
maschera all'avvio.
Spiego.Ti fai una funzione che la prima volta che parte il programma legge
il seriale dell'HD e lo scrive
in una tbl poi alle successive aperture controlla questo codice.
La seconda volta che il programma parte se la tbl esiste non fai partire la
funzione che ti genera la tbl
ma la apri e vai a leggere il valore.Con un paio di function che ti
restituiscono true o false il gioco č fatto.
SunRex

> passaggi.. è una cosa sensata, o dovrei procedere in altro modo?
Ora ti strabilio....
Se guardi sulla tua scrivania, noterai un affare (con forme svariate ma più
o meno sempre lo stesso)
che ha un cordone che finisce nel muro e che ogni tanto tanto (tra il tuo
sconcerto sul da farsi) continua a ripetere sempre lo stesso suono per un
pò.
E' lì già da tempo, prova a sollevare quella specie di gancio (non ti
preoccupare se si stacca, non è rotto) che finisce con un altro cordone
arricciato..
Se lo porti all'orecchio vedrai che è vivo.
bene prendi un libretto di istruzioni e ti si aprirà un mondo nuovo
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 ha scritto nel messaggio 
news:0r8ue.15697$yM4.2...@twister2.libero.it...

e come fai a sapere se chi usa il tuo programma sta cercando di installare 
una nuova copia su un nuovo pc (quindi a straforo) oppure lo sta 
semplicemente reinstallando sul pc (per il quale aveva acquistato la 
licenza) che ha formattato e quindi il seriale dell'hd č cambiato?
Ti tocca andare li per forza a fare il riconoscimento del case del pc e 
siggillarglielo dopo la verifica. Con una bella chiave hardware risolvi il 
problema alla radice. 4 licenze, 4 chiavi hardware, 4 paperelle
ciao, AEOM

 problema alla radice. 4 licenze, 4 chiavi hardware, 4 paperelle
bella l'idea. te le usi di solito? eventuali problemi/complicazioni?


 grazie SunRex! adesso ci provo..

 ha scritto nel messaggio
news:CJcue.15887$D7.4...@twister1.libero.it...

ciao SunRex,
allora per quanto riguarda la maschera di avvio stile northwind è tutto ok:
se si mette il check al successivo avvio non viene mostrata, e questo, se
non ho capito male, serve a fare in modo che una funzione "X" generi (niente
check) o non generi (col check) il codice e lo vada a scrivere nella tabella
Chiave, creata al momento: tutto ciò solo al primo avvio, anzi, fintantochè
l'utente non mette il check sulla maschera di avvio di cui sopra.
per quanto riguarda la function "X" preposta alla creazione della tabella e
alla scrittura del codice in essa, e le functions che mi restituiscono True
e False, però, non saprei come fare.. ti spiacerebbe darmi una mano? grazie
infinite!

 ha scritto nel messaggio
news:DUuue.17370$D7.4...@twister1.libero.it...

Rileggendo il 3D devo dire che ha ragione AEOM.
Cmq se vuoi seguire questo modo giusto per fare pratica.....
Allora controlliamo se esiste la tblChiaveHD
All'apertura del programma la prima volta
Sul form open della prima maschera che lanci
IF ControllaSeEsistetblChiaveHD=False Then
'la tabella non esiste quindi è la prima volta che lanci il programma
    CreaTabella
    Scrivici la chiave e se vuoi fai partire la funzione per il controllo.
Else
'la tabella esiste e devi solo far partire la routine di controllo
    apri la tblChiaveHD leggi il valore della chiave e confrontalo con
quello che ricavi dalla funzione per il serial number dellHD
End If
Function  ControllaSeEsistetblChiaveHD()
Dim TDF As DAO.TableDef
Dim db As DAO.Database
On Error GoTo ErrHandle
Set db = CurrentDb
For Each TDF In Dbs.TableDefs
If TDF.Name = "tblChiaveHD" Then
        ControllaSeEsistetblChiaveHD=True
Else
        ControllaSeEsistetblChiaveHD=False
End If
Next TDF
Set db Nothing
ErrHandle:
If Err.Number = 0 Then Exit Sub
End Sub
Sub CreaTabella()
Dim tdfChiaveHD As TableDef
Dim fldKey As Field
Dim fldData As Field
Set tdfCUP = db.CreateTableDef("tblChiaveHD")
Set fldKey = tdfCUP.CreateField("Key", dbText, 50)
Set fldData = tdfCUP.CreateField("Data", dbDate)
tdfCUP.Fields.Append fldKey
tdfCUP.Fields.Append fldData
db.TableDefs.Append dfChiaveHD
End Sub
SunRex

[CUT]

hello SunRex!
dunque anche te ritieni che la chiave hardware sai il metodo giusto di
procedere...
comunque sia credo che proverò a portare a compimento questa "impresa".
intanto ti ringrazio ancora per il valido aiuto e la grande pazienza! : )
alla prossima.
em.an.

Anch'io utilizzo il "Modulo GetSerialNumber" del sito comune così
com'è, ma la tua proposta sembra davvero interessante. Ho però delle
difficoltà ad adattarla al modulo che gestisce il SerialNumber. Mi
potresti dare un'ulteriore aiuto?
Grazie
Paolo