2008-11-26 9 views
3

Je souhaite que le code VB.NET ou VB accède au numéro de série du disque dur lors du démarrage du programme. C'est pour m'aider à protéger mon propre logiciel contre les personnes qui tentent de pirater des copies.Pour protéger le logiciel en accédant au numéro de série du disque dur

+1

trop sévère, Charles? J'ai pris cela comme demander de l'aide pour trouver les appels OS pour récupérer cette information. – Oddthinking

+0

[This] (http://stackoverflow.com/questions/278062/converting-hdd-serial-vb6-code-into-vbnet-code) question est presque la même. –

Répondre

2

Les utilisateurs doivent souvent mettre à niveau/remplacer leur disque dur. Mieux vaut utiliser le numéro de série du DMI.

3

Je ne peux pas vous offrir le code, désolé, mais à la place, je fournis un avertissement basé sur mon expérience antérieure dans le domaine. Le numéro de série du disque dur utilisé par un certain nombre de systèmes d'octroi de licences est en réalité un nombre faible qui est écrit sur le disque et non câblé dans le matériel. Les entreprises qui utilisaient un logiciel «fantôme» pour produire rapidement de nombreuses machines de bureau ou un logiciel de virtualisation pour produire rapidement de nombreux serveurs avaient souvent une identification identique du disque dur.

Alors faites attention si votre objectif est d'empêcher les entreprises d'acheter une copie et de l'utiliser (peut-être involontairement) sur de nombreuses machines.

7

En C#, mais vous avez l'idée. Vous souhaitez utiliser System.Management pour cela:

string driveLetter = Environment.SystemDirectory.Substring(0, 2); 
string sn = new System.Management.ManagementObject("Win32_LogicalDisk.DeviceID=\"" + driveLetter + "\"").GetPropertyValue("VolumeSerialNumber").ToString(); 

Comme d'autres l'ont souligné, cela pourrait ne pas être la meilleure façon de gérer cela. Cependant, c'est votre affaire.

1

En fait, j'ai utilisé le numéro de série du disque pour protéger mes logiciels. En vb 6.0, nous pouvons créer et utiliser FileSystemObject. Il permet d'accéder aux numéros de série de disques durs, ainsi que plusieurs autres fonctions:

  • affiche l'espace utilisé et libre de chaque disque dur
  • Création, suppression, déplacement de dossiers
  • copier des fichiers et des dossiers
  • fichiers texte d'impression
  • ... etc.

Notez que avant l'écriture du code et en déclarant l'objet activà e

Project--> References --> Microsoft Scripting Runtime 

Le code suivant extrait quelques informations sur le lecteur, mais vous pouvez aussi extraire le numéro de série du lecteur.

Sub ShowDriveInfo(path) 
    Dim fso, drv, bytesPerGB, freeGB, totalGB, s 

    s = "" 
    bytesPerGB = 1024 * 1024 * 1024 

    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set drv = fso.GetDrive(fso.GetDriveName(path)) 

    s = s & drv.Path & " - " 

    if drv.IsReady Then 
     freeGB = drv.FreeSpace/bytesPerGB 
     totalGB = drv.TotalSize/bytesPerGB 

     s = s & FormatNumber(freeGB, 3) + " GB free of " 
     s = s & FormatNumber(totalGB, 3) + " GB" 
    Else 
     s = s & "Not Ready" 
    End If 
    s = s & "<br />" 

    document.write (s) 
End Sub 

Si vous avez encore besoin, s'il vous plaît laisser une note à moi à [email protected] ou [email protected] Je vais vous envoyer le code source.

0

S'il vous plaît trouverez ci-dessous la réponse exacte à votre question:

Function ShowDriveInfo(drvpath) 
    Dim fso, d, s, t 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath))) 
    Select Case d.DriveType 
     Case 0: t = "Unknown" 
     Case 1: t = "Removable" 
     Case 2: t = "Fixed" 
     Case 3: t = "Network" 
     Case 4: t = "CD-ROM" 
     Case 5: t = "RAM Disk" 
    End Select 
    s = "Drive " & d.DriveLetter & ": - " & t 
    s = s & "<BR>" & "SN: " & d.SerialNumber 
    ShowDriveInfo = s 
End Function 
Questions connexes