Jag skall skicka mitt program till en annan användare. Ett sätt som används av bland annat Bentley är att ta datornamnet och lägga in det i en licensfil som de själva distribuerar. I denna fil finns då inbakat datornamnet och hur lång tid licensen skall gälla plus en del annat (har inte orkat bemöda mig att knäcka än). Att använda datornamnet verkar inte vara bra. Alldeles för lätt att ändra. Hårddiskens ID nummer är ganska bra. Men varför inte använda IP-numret. Om det nu är fast så är det ju unikt... IP-adressen har jag nog hittat (hexkodad i winNT), men den ligger under en nyckel som är samma som nätverkskortets namn, dvs olika nycklar beroende på nätverkskortmodell. I en modul: Stort TACK. mm.. vet inte riktigt om det stämmer, men jag har för mig att alla CPU:er har ett unikt serienummer.. kan juh kanske vara en idé att använda det.. vet dock inte om det är mycket jobb.. ;) angående framtagandet av ip adress.. finns det inte något api som kan göra det åt en? Hur blir det då med flera nic's? För att plocka fram ip-adresser på en dator hittar ni allt ni behöver veta på denna länken: http://www.mvps.org/vbnet/Förhindra otillåtet användande av VB-program.
Programmet skall köra i ett lokalt lan, med fasta IP-adresser (inte DHCP).
Min tanke är att lägga en funktion i programmet som läser maskinens IP-adress. De som skall använda programmet, får rapportera sin IP-adress till mig. Med hjälp av en liten formel, räknar jag sedan ut ett 'serienummer' som är IP-adress-beroende. Användaren måste sedan ange detta 'serienummer' i en lokal databas där programmet skall köras, alternativt lägga det i registret.
Vid fel angivet 'Serienummer', kommer programmet inte att starta.
Är detta ett vettigt sätt att lösa problemet?
Om ja, var i registret hittar jag aktuell IP-adress?
(Kan man i registret hitta nätverkskortets mac-adress, så blir det ju ännu bättre.)
Om nej, förslag på bättre lösning.
/ MikaelSv: Förhindra otillåtet användande av VB-program.
Nackdelen är att det är lätt att ändra en annan dators namn till samma och på så vis "stjäla" licensen, men å andra sidan begränsar man licenstiden och skickar ut nya filer till enbart dem som har registrerat sig.
Om det är rätt för dig vet jag inte, men en alternativ lösning i alla fall.
Lycka till. :)
/EESv: Förhindra otillåtet användande av VB-program.
Finns det inte något annat man kan läsa i registret som är unikt, och inte går så lätt att ändra?
Exvis IP adress, 'ProcessorID' eller liknande.
/ MikaelSv: Förhindra otillåtet användande av VB-program.
En nackdel är att om användaren formaterar om hårdisken får den ett nytt ID nummer och då gäller ju inte licensnyckeln längre.Sv: Förhindra otillåtet användande av VB-program.
MvH Dan "DaPe" PerssonSv: Förhindra otillåtet användande av VB-program.
Om det dessutom finns mer än ett nätverkskort, vilket skall jag använda?
En annan nackdel med IPnumret är om man skulle använda svartnät eller DHCP, så fungerar det inte.
Något annat unikt vore bra att hitta.
Exvis HårdDiskID:t. Men var finns det i registret? Eller kan man nå det via något API?
/ MikaelSv: Förhindra otillåtet användande av VB-program.
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
Public Function GetVolSerialNum(DriveRoot As String) As String
Dim lVolSerNum As Long
Dim sTemp1 As String
Dim sTemp2 As String
Dim lretVal As Long
sTemp1 = Space(256)
sTemp2 = Space(256)
lretVal = GetVolumeInformation(DriveRoot, sTemp1, Len(sTemp1), _
lVolSerNum, 0, 0, sTemp2, Len(sTemp2))
GetVolSerialNum = Hex(lVolSerNum)
End Function
I en form
Private Sub Form_Load()
Debug.Print GetVolSerialNum("C:\")
End Sub
Lycka tillSv: Förhindra otillåtet användande av VB-program.
Jag kommer i programmet att läsa in serienumret, behandla det enligt en förutbestämd formel.
När programmet startas kommer det att se om en giltig 'CheckSumma' finns på rätt ställe i registret eller ev i en databas som är kopplad till programmet. Om rätt checksumma finns, startar programmet.
Om inte, kommer det upp en msgbox med hdd:ns serienummer. Den som installerar programmet meddelar mig detta serienummer. Jag räknar då ut checksumman enligt samma formel som programmet. Den som installerat programmet måste då lägga denna checksumma i databasen eller i registret. Sedan kommer programmet att starta.
Jag tycker detta är ett ganska bra sätt att ha kontroll över att programmet inte kopieras till flera datorer.
Vad tycker ni?
/ MikaelSv: Förhindra otillåtet användande av VB-program.
problem blir det juh iofs om användaren byter CPU.. :PSv: Förhindra otillåtet användande av VB-program.
/FransSv: Förhindra otillåtet användande av VB-program.
Kjell