VB & hardware info

5 отговора 183 прегледа
#1

VB & hardware info

Kak moga da polucha nqkakva informaciq deto identificira hardware?
Po-tocno elementi deto se smenqt po-rqdko, naprimer nqkakav unikalen identifikator na CPU,MB,HDD kojto da ne se promenq ako OS se preinstalira, zameni s druga i t.n( ili usera add/resize/delete partitions)
Edinstveno mi idva na um MAC adresa ama ne vsicki pc-ta imat lan card..

Отговор
в отговор на Miro #2

погледни този пример


Public Declare Function GetVolumeInformation Lib "kernel32.dll" 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


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

volname = Space(256)
sysname = Space(256)
' Get information about the C: drive's volume.
retval = GetVolumeInformation("C:\", 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



bofh
Отговор
в отговор на bofh #3

Re: погледни този пример

Blagodarq!

Obace tova se otnasq za logicheski dql a ne za harddiska, t.e ako naprimer sazdam nov partition ili smenq file system, sled tova ste polucha razlichen rezultat. A moze bi i ako preinstaliram OS - v takav slucaj ste se smeni li Serial Number ?

Nqma li nacin da polucha nqkakav identificator na cpu-to ili MB-to, ili bios-a?
10x

Отговор
в отговор на Miro #4

хм

Според мен ти е достатъчно да знаеш сериния номер на дял-а на който е ОС-а. Т.е ако се форматира дяла и твоето приложение ще изчезне. Иначе ако не те мързи порови из WINAPI-тата макар че съм почти убеден че няма такова, което да ти свърши работа. GetSystemInfo не стаа за таз работа :P Другия вариант е да направиш собствена библиотека (на С или асемблер) и да ползваш функция от нея.

Успех
bofh
Отговор
в отговор на Miro #5

Re: VB & hardware info

Използвай CPUID инструкция на асемблер, дава доста информация за процесора. Виж "Архитектура и системно програмиране за Pentium базирани компютри". Освен това в CMOS на компютъра има цилиндрите, главите и т.н. на хард диска, което не би трябвало да се променя често, но трябва да си намериш как да се разчете от там.

Отговор
в отговор на naki #6

тц

1) Някои процесори (Cyrix :P) не я поддържат.
2) Под NT трябва да я изпълняваш от device driver за да мине. User application-ите нямат такава свобода.
3) Иначе ако си говорим само за интел и амд и win 9x няма грижи и е добра идея :)

bofh
Отговор