Newsgroup: it.comp.appl.access
Titolo: Numero seriale HD

Buongiorno a tutto il NG
Qualcuno saprebbe dirmi come fare per leggere il numero seriale dell'HD???
Ho visto nel Sitocomune, ma l'esempio non riesco a farlo funzionare (o
meglio non riesco a vedere il codice!!) :-)
....altrimenti potreste suggerirmi un altro modo per proteggere
l'applicazione da copie non autorizzate??
Ringrazio anticipatamente ...

 Qualcuno saprebbe dirmi come fare per leggere il numero seriale dell'HD???
Ciao se guardi un po' più su ho postato la soluzione in un post dal nome
"protezione con numero seriale"
Comunque per comodità ti allego tutto qui.
Ciao spero ti sia utile :-)
Vi posto il codice qui di seguito che dovrà essere messo nella maschera che
effettua il controllo:
***************************************************************************
Option Compare Database
'***
Option Explicit
Private Declare Function GetVolumeInformation Lib "kernel32" _
   Alias "GetVolumeInformationA" _
  (ByVal lpRootPathName As String, _
   ByVal lpVolumeNameBuffer As String, _
   ByVal nVolumeNameSize As Long, _
   lpVolumeSerialNumber As Long, _
   lpMaximumComponentLength As Long, _
   lpFileSystemFlags As Long, _
   ByVal lpFileSystemNameBuffer As String, _
   ByVal nFileSystemNameSize As Long) As Long
Private Sub rgbGetVolume(PathName As String, _
                         DrvVolumeName As String, _
                         DrvSerialNo As String)
  'create working variables
  'to keep it simple, use dummy variables for info
  'we're not interested in right now
   Dim r As Long
   Dim pos As Integer
   Dim hword As Long
   Dim HiHexStr As String
   Dim lword As Long
   Dim LoHexStr As String
   Dim VolumeSN As Long
   Dim MaxFNLen As Long
   Dim UnusedStr As String
   Dim UnusedVal1 As Long
   Dim UnusedVal2 As Long
  'pad the strings
   DrvVolumeName = Space$(14)
   UnusedStr = Space$(32)
  'do what it says
   r = GetVolumeInformation(PathName, _
                            DrvVolumeName, _
                            Len(DrvVolumeName), _
                            VolumeSN&, _
                            UnusedVal1, UnusedVal2, _
                            UnusedStr, Len(UnusedStr))
  'error check
   If r = 0 Then Exit Sub
  'determine the volume label
   pos = InStr(DrvVolumeName, Chr$(0))
   If pos Then DrvVolumeName = Left$(DrvVolumeName, pos - 1)
   If Len(Trim$(DrvVolumeName)) = 0 Then DrvVolumeName = "(no label)"
  'determine the drive volume id
   hword = HiWord(VolumeSN)
   lword = LoWord(VolumeSN)
   HiHexStr = Format$(Hex(hword), "0000")
   LoHexStr = Format$(Hex(lword), "0000")
   DrvSerialNo = HiHexStr & "-" & LoHexStr
End Sub
Private Function HiWord(dw As Long) As Integer
    HiWord = (dw And &HFFFF0000) \ &H10000
End Function
Private Function LoWord(dw As Long) As Integer
    If dw And &H8000& Then
        LoWord = dw Or &HFFFF0000
    Else
        LoWord = dw And &HFFFF&
    End If
End Function
'--end block--
****************************************************************************
***********
successivamente potete controllare tutto tramite una funzione di questo tipo
(da inserire in una maschera che ti visualizzi i dati tanto per vedere che
funziona, poi adattalo alle tue esigenze !)
:
Private Sub nomesub
Dim PathName As String
Dim DrvVolumeName As String
Dim DrvSerialNo As String
PathName$ = "c:\"
rgbGetVolume PathName, DrvVolumeName, DrvSerialNo
Me![nomevolume] = DrvVolumeName       ' "Nomevolume" è il nome di una
casella di testo non assocciata sulla maschera che contiene la label del
disco
Me![serialvolume] = DrvSerialNo               ' "serialvolume" è il nome di
una casella di testo non assocciata sulla maschera che contiene il codice
seriale del HD
End Sub
****************************************************************************
*******************