Hur får man fram serienumret på disketten? (syfte: kopieringsskydd). Svaret hittades på http://www.vbapi.com/ref/g/getvolumeinformation.html hej Nej, det gör man inte. Kör man Disccopy eller liknande kopieras allt - utom just serienumret. Varenda byte blir identisk utom 4 byte i bootsektorn där serienumret lagras. Istället skapas ett helt nytt serienr. Har testat och det verkar funka finfint. Man verkar dock få köra en snabbformatering så att ett riktigt serienr skapas på originaldisketten innan man lägger in något på den, annars verkar det bara ligga 0000-0000 som serienr (så att det inte går att kopiera med vanligt copy). Anledningen till att inte serienumret blir detsamma när man kopierar en diskett beror på att serienumret inte är något annat än vilken tidpunkt som disketten formaterades. Eftersom det är inte några problem att ändra serienumret till vad man vill så lämpar det ju sig inte precis för koperingsskydd. Hej Hej Testade tidigare i Win XP, och fick då olika serienr. Hej Hej igen, Igen IgenLäsa diskettens serienr
Provade med API enligt nedan men fick blankt tillbaka...
(ska konverteras till Hex enligt någon formel också (bortkommenterat) men först gäller det att få ut någonting alls...
Kan FileSystemObject användas på något sätt?
Någon som har en lösning med kod?
<code>
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 Get_Click()
Dim VolumeSerialNumber As Long, MaximumComponentLength As Long
Dim FileSystemFlags As Long
Dim TheSerialNumber As String
If GetVolumeInformation("A:", "", 0, VolumeSerialNumber, _
MaximumComponentLength, FileSystemFlags, "", 0) Then
'TheSerialNumber = Hex$(HiWord(VolumeSerialNumber), 4) + _
' Hex$(LoWord(VolumeSerialNumber), 4)
TheSerialNumber = VolumeSerialNumber
End If
MsgBox "The drive serial number is: " & TheSerialNumber, vbInformation, "Serienr"
End Sub
</code>Tjohoo - jag hittade lösningen själv!
<code>
Private Sub Command4_Click()
' Display the volume label, serial number, and file system name
' of the C: drive. Note how the serial number value is manipulated to
' display it properly.
Dim volname As String ' receives volume name of C:
Dim sn As Long ' receives serial number of C:
Dim snstr As String ' display form of serial number
Dim maxcomplen As Long ' receives maximum component length
Dim sysflags As Long ' receives file system flags
Dim sysname As String ' receives the file system name
Dim retval As Long ' return value
' Initialize string buffers.
volname = Space(256)
sysname = Space(256)
' Get information about the C: drive's volume.
retval = GetVolumeInformation("A:\", volname, Len(volname), sn, maxcomplen, _
sysflags, sysname, Len(sysname))
' Remove the trailing nulls from the two strings.
volname = Left(volname, InStr(volname, vbNullChar) - 1)
sysname = Left(sysname, InStr(sysname, vbNullChar) - 1)
' Format the serial number properly.
snstr = Trim(Hex(sn))
snstr = String(8 - Len(snstr), "0") & snstr
snstr = Left(snstr, 4) & "-" & Right(snstr, 4)
' Display the volume name, serial number, and file system name.
'Debug.Print "Volume Name: "; volname
'Debug.Print "Serial Number: "; snstr
'Debug.Print "File System: "; sysname
MsgBox "Serienr: " & snstr, vbInformation, "Serienr"
End Sub
</code>Sv: Tjohoo - jag hittade lösningen själv!
Bara en liten information ang kopieringsskydd.
När du kopierar en diskett kopierar du även serienummert.
Dvs det kan finnas hur många disketter som helst med samma serienummer.
mvh
SvenNix
Mvh StefanSv: eller?
Sv: eller?
Dom här trixen höll jag med på för flera år sedan
men kom på att det inte fungerar som kopieringsskydd.
Jag var tvungen att göra en koll.Formaterade två disketter
Kopierade Diskett1 till Diskett2 med kopiering från Kontrollpanelens
kopieringsprogram. Win98
Sedan jämförde jag de två bootsektorerna. Dom var identiskt lika.
mvh
SvenSv: eller?
>...har du lyckats kopiera en diskett och fått samma serienr? I så fall, hur?
Vanlig diskett kopiering med Win98 ,Det blir samma.
Börjar fundera på vad du menar med serienummer.
>The DOS Boot Record
Offset Name Size Description
---------------------------------------------------------------------------
***37 Volume ID DWord Volume ID for disk
***41 Volume label 11 bytes Copy of volume label
***52 File system label 8 bytes Identifies file system type (FAT12
or FAT16)
DSUsch då, du har rätt!
Men nu testade jag på jobbet med Win 98 - och då blev serienumren samma! Får testa på XP igen när jag kommer hem...har Microsoft ändrat kopieringsrutinen eller var jag klantig på nåt sätt...hur som helst kan man konstatera att detta skulle blivit ett minst sagt värdelöst kopieringsskydd...det får bli en annan lösning.
Tack för uppmärksamheten!Sv: Usch då, du har rätt!
Jag har ett program som gör disketten lösenordsskyddad.
Om du är intresserad skickar jag gärna
mvh
SvenSv: Usch då, du har rätt!
Har nu testat på XP igen - och fick olika serienr. MS måste ha ändrat på kopieringsrutinen.
Hur funkar detta lösenordsskydd? Lösenordet går väl att sprida...
Du kan maila mig på stefan.haglund@mbox301.swipnet.se om du vill.
Har annars en annan metod där man låser programmet till datorn och inte till en diskett och utifrån ett installationsnummer erhåller ett anpassat lösenord, nackdelen är att när någon byter dator eller formaterar hårddisken så måste jag skicka ut ett nytt lösenord, vilket jag önskar slippa om det är möjligt.
Hälsningar StefanSv: Usch då, du har rätt!
>Har annars en annan metod där man låser programmet till datorn
Ojaaaaaaaa du kan inte ana vad jag jobbat med detta.
Bios nummer är ganska bra.Sen finns det en massa detaljer
i den personliga datorn som är kopplade till just den datorn.
jag skickar mina gamla detaljer om diskett lösenord
Ha det
SvenSv: Usch då, du har rätt!
Råkade se att du ändrat rubriken. (Inte riktat mot dig Stefan)
>Usch då, du har rätt!
Kom ihåg det chippsar , dom gamle kan också ha rätt.
ha det
Sven