Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: CD_R - numer seryjny
Jelcyn
Admin forum




Typ: admin
Postów: 895
Zarejestrowany: Apr 2002
CD_R - numer seryjny

Oto pytanie czytelnika, ktory ma problem z zalogowaniem się na forum

Odpowiedzi proszę umieszczać na forum i poinformować autora pytania o udzielonej odpowiedzi ()

Mam następujące pytanie: Czytałem gdzieś, że płyty CD-R posiadają numery seryjne. Chciałbym przy pomocy odczytu nr seryjnego takiej płyty zabezpieczyć aplikację przed kopiowaniem. Czy jest to możliwe? Jeśli tak to prosiłbym o kawałek kodu... Z góry dziękuję i pozdrawiamZygmunt


_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

17-05-2004 19:46
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       270849979    6237704
Kris126




Typ: neutral
Postów: 32
Zarejestrowany: Mar 2004

Sprubój za pomocą API, przykład z pliku pomocy Api32_PL.hlp

'deklaracja funkcji w module
Public 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


Funkcja zwraca numer seryjny partycji, jej nazwę, zastosowany system plików i kilka innych ciekawych rzeczy. Numer seryjny jest nadawany przez system operacyjny podczas formatowania. Numer taki może być przydatny przy zabezpieczaniu programu przed nielegalnym kopiowaniem. Można także sprawdzić czy jest możliwe zapisanie długich nazw plików. Większość przykładów w Internecie pokazuje jak wykorzystać tą funkcję tylko do wyciągnięcia numeru seryjnego. Ciekawe czemu

lpRootPathName: litera danego dysku wraz z katalogiem głównym np. "c:\"

lpVolumeNameBuffer: tu zostanie przekazana nazwa logiczna dysku (partycji) np. "radek 1"

nVolumeNameSize: wielkość oznaczająca ile znaków zostało przeznaczonych na nazwę dysku

lpVolumeSerialNumber: zmienna zawierająca numer seryjny dysku logicznego

lpMaximumComponentLength: możemy się dowiedzieć czy system (sposób sformatowania danej partycji) obsługuje długie nazwy plików. Jeśli obsługuje długie nazwy plików, to zostanie zwrócona liczba 255

lpFileSystemFlags: dodatkowe informacje o partycji  np. czy jest skompresowana, czy rozpoznaje duże i małe litery podczas zapisywania nazwa, czy partycja jest skompresowana

lpFileSystemNameBuffer: dostajemy nazwę systemu np. "FAT 32"

nFileSystemNameSize: określamy wielkość przeznaczoną na nazwę systemu

Przykład:

Const MAX_NAME As Integer = 256 'maksymalny rozmiar stringu do wczytania
Dim VolumeName As String * MAX_NAME, SystemType As String * MAX_NAME
Dim Serial As Long, FileLenght As Long
Dim ret1 As Integer, ret2 As Integer

GetVolumeInformation "C:\", VolumeName, MAX_NAME, Serial, FileLenght, 0, _
SystemType, MAX_NAME

ret1 = InStr(VolumeName, vbNullChar)
ret2 = InStr(SystemType, vbNullChar)
Label1.Caption = "Nr seryjny: " & Serial & " Nazwa: " & Left(VolumeName, ret1 - 1) _

& " Typ systemu: " & Left(SystemType, ret2 - 1) & " Dł. nazw: " & FileLenght

' http://www.vbtools.prv.pl ; '

22-05-2004 23:22
Pokaż profil Kris126  Wyślij email do Kris126        5026200
Wszystkich odpowiedzi: 1 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1