Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.149.251.155] |
|
Сообщ.
#1
,
|
|
|
например я записал на диск программу которую сделал на vb как мне сделать чтобы пользователи при копировании на свой винт прога не запускалась
|
Сообщ.
#2
,
|
|
|
Private Declare Function GetVolumeSerialNumber 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 Function VolumeSerialNumber(ByVal RootPath As String) As String Dim VolLabel As String Dim VolSize As Long Dim Serial As Long Dim MaxLen As Long Dim Flags As Long Dim Name As String Dim NameSize As Long Dim s As String Dim ret as Boolean ret=GetVolumeSerialNumber(RootPath, VolLabel, VolSize, Serial, MaxLen, Flags, Name, NameSize) If ret Then s = Format(Hex(Serial), "00000000") VolumeSerialNumber = Left(s, 4) + "-" + Right(s, 4) Else VolumeSerialNumber = "0000-0000" End If End Function ' Предположим, что прога была установлена на диск C: Private Sub Form_Load() If VolumeSerialNumber(Left(CurDir, 3)) <> "0000-0001" Then End End Sub |
Сообщ.
#3
,
|
|
|
PS: Если кто не понял, прога будет смотреть серийный номер диска (а он уникален), и если номер не будет совпадать с её родным, она завершит свою работу немедленно. АПИ ф-ция GetVolumeSerialNumber получает серийный номер диска. Form_Load процедура загрузки главного окна(её можно заменить, например, на Sub Main).
|
Сообщ.
#4
,
|
|
|
Наверное уместно будет вспомнить,
что VolumeSerialNumber считывается из первого сектора. Где он записан как раз перед меткой тома. И вполне может быть перезаписан. От большинства пользователей это сработает, просто хотелось напомнить о слабостях этого метода. |
Сообщ.
#5
,
|
|
|
Тот, кто сможет изменить серйный номер своего диска, тот сможет написать крак на прогу, то есть уже ничего не спасёт!
|
Сообщ.
#6
,
|
|
|
Это как сказать я - кряк не напишу однозначно
а номер диска поменять - пожалуйста недавно видел прогу которая это делает Спорить не собираюсь - все верно, просто подумал - может лучше к дате биоса пришить програмку? Хотя она не уникальна. В общем нет в мире совершенства... |
Сообщ.
#7
,
|
|
|
а как узнать s\n CD
|
Сообщ.
#8
,
|
|
|
Каждый сидюк тоже имеетсвой уникалбный серийный томер, как и жёсткие, гибкие и хрен-знает-какие диски!
|