giannino1995 ha scritto:
Si e ti ringrazio ma io vorrei che il mio amico non fosse in grado di regalare il programma ad altri. Con il tuo sistema, se ho capito bene, questa cosa non si può fare. L'amico infatti potrebbe passare il file e la password ad un altro suo amico e così via...
Vediamo di fare chiarezza:
1) Innanzitutto parliamo di un file, non di un programma, e la differenza non è cosa da poco.
2) In secondo luogo, quand'anche tu riesca a leggere il SID all'avvio del file Excel del pc corrente, poi come fai a sapere che quel SID è quello del pc del tuo amico?
Lui te lo dovrebbe comunicare PRIMA, diversamente non vedo come tu possa fare questa verifica.
Oltretutto non è proprio banale, farlo.
3) Ma questo punto basterebbe che lui ti fornisse il NOME del computer + il NOME dell'utente, che tu li imposterai come password.
Lui li dovrà inserire ed a quel punto li confronti con il pc corrente utilizzando semplici variabili di ambiente, recuperate con la funzione Environ(), ad esempio nel mio pc io ottengo questo:
Dim sComputer As String
Dim sUtente As String
sComputer = Environ("COMPUTERNAME") ' risultato: PC-GIORGIO
sUtente = Environ("USERNAME") ' risultato: giorgio
imposti la password: PC-GIORGIO-giorgio
e la confronti con quella inserita dal tuo amico.
Trovo difficile che un'altra persona vada a modificare il nome del proprio utente e quello del proprio computer solo per aprire il tuo file Excel.
Attento che potrebbe però modificare temporaneamente le variabili di ambiente.
Se ti serve una protezione (si fa per dire) più 'seria' allora il metodo corretto è utilizzare le funzion API:
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetComputerNameA Lib "kernel32" (ByVal lpBuffer As String, nSize As Long) As Long
Nel caso, documentati sul web, nel caso tu voglia usarle.
http://allapi.mentalis.org/apilist/GetUserName.shtm