Большой Воронежский Форум
» Программирование>Уникальная инфа о компе в Visual Basic
sasa 15:13 24.10.2002
Кто знает как выцепить уникальную инфу о конкретном компе (мне это надо для защиты программы): серийник какой-нибудь или типа того... [Ответ]
qwe 12:56 29.10.2002
Привет sasa!

посмотри, может подойдёт.

Функция GetVolumeInformation
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

Платформа:

Windows 95/98: Поддерживается
Windows NT: Требуется Windows NT 3.1 или выше
Windows 2000: Поддерживается
Windows CE: Не поддерживается
GetVolumeInformation определяет серийный номер,метку диска и его файловую систему.Если Вы пытаетесь получить информацию относительно дисковода для гибких дискет, который не имеет гибкого диска или CD-ROM,в котором нет компакт-диска, система отображает окно с сообщением,что нужно вставить гибкий диск или компакт-диск. Чтобы предотвратить систему от отображения этого окна сообщений, вызовите функцию SetErrorMode с SEM_FAILCRITICALERRORS.В случае ошибки,функция возвращает 0(используйте GetLastError для получения кода ошибки),в успешном случае функция возвращает значение отличное от 0

Параметры
lpRootPathName
Корневой каталог диска,например "c:\" или "a:\"
lpVolumeNameBuffer
Буфер, который получает имя указанного диска
nVolumeNameSize
Длину буфера в символах. Этот параметр игнорируется, если буфер пуст
lpVolumeSerialNumber
Указатель на переменную, которая получает серийный номер диска. Этот параметр может быть НУЛЕВОЙ(NULL), если серийный номер не требуется.Windows 95/98: Если диск является сетевым- серийный номер не будет возвращен
lpMaximumComponentLength
Переменная, которая получает максимальную длину в символах компонента имени файла, поддержанного указанной файловой системой. Компонент имени файла - та часть имени файла между наклонными чертами влево. Значение, сохраненное в переменной, указанной lpMaximumComponentLength используется, чтобы указать, что длинные имена поддерживаются указанной файловой системой. Например, для файловой системы FAT, поддерживающей длинные имена, функция сохраняет значение 255, скорее чем предыдущие 8.3 . Длинные имена могут также поддерживаются
lpFileSystemFlags
Переменная, которая получает флажки, связанные с указанной файловой системой. Возможны любые комбинации следующих флажков; однако, FS_FILE_COMPRESSION и FS_VOL_IS_COMPRESSED взаимоисключающий: FS_CASE_IS_PRESERVED The file system preserves the case of file names when it places a name on disk. FS_CASE_SENSITIVE The file system supports case-sensitive file names. FS_UNICODE_STORED_ON_DISK The file system supports Unicode in file names as they appear on disk. FS_PERSISTENT_ACLS The file system preserves and enforces ACLs. For example, NTFS preserves and enforces ACLs, and FAT does not. FS_FILE_COMPRESSION The file system supports file-based compression. FS_VOL_IS_COMPRESSED The specified volume is a compressed volume; for example, a DoubleSpace volume. FILE_NAMED_STREAMS The file system supports named streams. FILE_SUPPORTS_ENCRYPTION The file system supports the Encrypted File System (EFS). FILE_SUPPORTS_OBJECT_IDS The file system supports object identifiers. FILE_SUPPORTS_REPARSE_POINTS The file system supports reparse points. FILE_SUPPORTS_SPARSE_FILES The file system supports sparse files. FILE_VOLUME_QUOTAS The file system supports disk quotas.
lpFileSystemNameBuffer
Указатель на буфер, который получает название файловой системы (типа FAT или NTFS).
nFileSystemNameSize
Определяет длину в символах буфера названий файловых систем. Этот параметр игнорируется, если буфер названий файловых систем не указан
Пример:


Dim Serial As Long, VName As String, FSName As String
VName = String$(255, Chr$(0))
FSName = String$(255, Chr$(0))
'получаем информацию о диске
GetVolumeInformation "C:\", VName, 255, Serial, 0, 0, FSName, 255
'Strip the extra chr$(0)'s
VName = Left$(VName, InStr(1, VName, Chr$(0)) - 1)
FSName = Left$(FSName, InStr(1, FSName, Chr$(0)) - 1)
Debug.Print "Имя диска "; VName
Debug.Print "Файловая система "; FSName
Debug.Print "Серийный номер диска "; Trim(Str$(Serial))

Сам я этой функцией не пользовался, но работать должна.

С уважением qwe. [Ответ]
Kerish 11:12 04.11.2002
И это всё???????
Я могу вытащить абсолютно любую инфу о компе через Visual Basic - ЛЮБУЮ!!!
Даже производителя BIOS и Процессора.Производителя любого железа в твоем компе.Версии любых драйверов.Все о железе.О сети...Про всё! [Ответ]
qwe 15:20 04.11.2002
Kerish: А оно тебе надо? )) [Ответ]
Kerish 16:22 04.11.2002
Ну если только свою Si Soft Sandra делать... [Ответ]
Вверх