Страница: 1 |
Страница: 1 |
Вопрос: Mac-adress?
Добавлено: 20.03.06 10:56
Автор вопроса: max
Помогите написать программку на VB для извлечения Mac-adress из текущего компа и занесения его в ячейку EXCEL.
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 20.03.06 11:42
Если их несколько, что будешь делать?
Номер ответа: 2
Автор ответа:
max
Вопросов: 1
Ответов: 3
Профиль | | #2
Добавлено: 20.03.06 12:39
Вообще говоря я в компе чайник, а нужно мне какой-нибудь уникальный номер с компа клиента, чтобы он не мог передать мою программу в екселе кому-нибудь другому без моего ведома. Может быть лучше тогда использовать другой какой-нибудь номер? Вообще какие уникальные коды или адреса, или номера есть у компа, которые можно извлекать с помощью визуалбейсика?
Номер ответа: 3
Автор ответа:
Дмит
Вопросов: 11
Ответов: 160
Web-сайт:
Профиль | | #3
Добавлено: 20.03.06 14:06
Сделай запись в реестре при установке и проверяй её.
Номер ответа: 4
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #4
Добавлено: 20.03.06 16:55
Это изначально неосуществимо. Никакой код на VBA не может помешать ничего делать. Ибо его запуск может запрещаться пользователем. RTFM.
Хотя бы умозрительно ты прокручивал эту схему в голове?
Сделай это, и ты увидишь, что в результате программа будет устанавливаться на любом компьютере.
Номер ответа: 5
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #5
Добавлено: 20.03.06 17:42
http://www.microsoft.com/Rus/Msdn/Activ/MSVB/Archive/WindowsAPI/Other/319.mspx
Номер ответа: 6
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #6
Добавлено: 20.03.06 18:02
Если я тебя правильно понял, тебе поможет этот код. Кроме Mac-adress’а там много чаво… Нужно в ссылках подключить библиотеку Microsoft WMI Scripting V1.2 Library.
Dim objComp As Object
Private Sub Command1_Click()
Dim sNull As String
Dim objProp As SWbemProperty
Dim objProp_2 As SWbemProperty
Dim objSet As SWbemObjectSet
Dim objSet_2 As SWbemObjectSet
Dim Obj As SWbemObject
Dim Obj_2 As SWbemObject
On Error Resume Next
Set objSet = objComp.InstancesOf("Win32_NetworkAdapter"
For Each Obj In objSet
List1.AddItem "**********************************************"
For Each objProp In Obj.Properties_
With objProp
If .Name = "MACAddress" Then
sNull = .Value
If Len(sNull) > 0 Then
List1.AddItem .Name & " - " & .Value
Set objSet_2 = objComp.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress = '" & .Value & "'"
For Each Obj_2 In objSet_2
For Each objProp_2 In Obj_2.Properties_
If objProp_2.Name = "IPAddress" Then
sNull = ""
sNull = objProp_2.Value
If Len(sNull) > 0 Then List1.AddItem objProp_2.Name & " - " & objProp_2.Value
End If
Next
Next
End If
ElseIf .Name = "NetConnectionStatus" Then
Select Case .Value
Case 0: List1.AddItem "NetConnectionStatus - Disconnected"
Case 1: List1.AddItem "NetConnectionStatus - Connecting"
Case 2: List1.AddItem "NetConnectionStatus - Connected"
Case 3: List1.AddItem "NetConnectionStatus - Disconnecting"
Case 4: List1.AddItem "NetConnectionStatus - Hardware not present"
Case 5: List1.AddItem "NetConnectionStatus - Hardware disabled"
Case 6: List1.AddItem "NetConnectionStatus - Hardware malfunction"
Case 7: List1.AddItem "NetConnectionStatus - Media disconnected"
Case 8: List1.AddItem "NetConnectionStatus - Authenticating"
Case 9: List1.AddItem "NetConnectionStatus - Authentication succeeded"
Case 10: List1.AddItem "NetConnectionStatus - Authentication failed"
End Select
ElseIf .Name = "Availability" Then
Select Case .Value
Case 1: List1.AddItem "Availability - Other"
Case 2: List1.AddItem "Availability - Unknown"
Case 3: List1.AddItem "Availability - Running/Full Power"
Case 4: List1.AddItem "Availability - Warning"
Case 5: List1.AddItem "Availability - In Test"
Case 6: List1.AddItem "Availability - Not Applicable"
Case 7: List1.AddItem "Availability - Power Off"
Case 8: List1.AddItem "Availability - Off Line"
Case 9: List1.AddItem "Availability - Off Duty"
Case 10: List1.AddItem "Availability - Degraded"
Case 11: List1.AddItem "Availability - Not Installed"
Case 12: List1.AddItem "Availability - Install Error"
Case 13: List1.AddItem "Availability - Power Save - Unknown"
Case 14: List1.AddItem "Availability - Power Save - Low Power Mode"
Case 15: List1.AddItem "Availability - Power Save - Standby"
Case 16: List1.AddItem "Availability - Power Cycle"
Case 17: List1.AddItem "Availability - Power Save - Warning"
End Select
ElseIf Len(.Value) > 0 Then
List1.AddItem .Name & " - " & .Value
End If
End With
Next
Next
End Sub
Private Sub Form_Load()
Set objComp = GetObject("winmgmts:{impersonationLevel=impersonate}"
End Sub
Номер ответа: 7
Автор ответа:
max
Вопросов: 1
Ответов: 3
Профиль | | #7
Добавлено: 20.03.06 19:05
только я не знаю как и куда его вставить, мне в итоге надо например чтобы в ячейку A1 вставлялся бы уникальный код конкретного компа
далее у меня мысль такая:
в моей программе которую я рассылаю таким же чайникам в компе как и я, в одном из своих макросов я делаю каждый раз запрос на код клиенского компа и если он не совподает то мой макрос не вычислит результат, т.е. если эту прогу запускать на другом компе то она не должна считать так как компа не совпадет, мой файл екселя под паролям и клиент простой не сможет его раскрыть чтобы посмотреть внутреннусти макроса и тем более не сможет поменять код своего компа.
спецы помогите, как вставить этот или другой блок в существующий макрос?
Номер ответа: 8
Автор ответа:
APS
ICQ: 234458121
Вопросов: 38
Ответов: 107
Профиль | | #8
Добавлено: 20.03.06 21:04
А может проще определять текущего пользователя и ставить соответствие. Тогда от компа вообще зависеть не будешь, только от того, кто авторизовался в виндусах.
Номер ответа: 9
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #9
Добавлено: 20.03.06 21:23
Mihalych, если еще есть что-то в этом роде?
Номер ответа: 10
Автор ответа:
Дмит
Вопросов: 11
Ответов: 160
Web-сайт:
Профиль | | #10
Добавлено: 20.03.06 22:22
Хотя бы умозрительно ты прокручивал эту схему в голове?
Сделай это, и ты увидишь, что в результате программа будет устанавливаться на любом компьютере
Имелось ввиду сделать запись ручками, а проверять её при запуске программы. Если автор топика задаёт подобные вопросы,то такой защиты хватит.
Номер ответа: 11
Автор ответа:
max
Вопросов: 1
Ответов: 3
Профиль | | #11
Добавлено: 20.03.06 23:44
http://www.vbarchiv.net/archiv/tipp_details.php?pid=576
здесь как раз то что я искал, однако вот вопрос еще:
теперь эта функция успешно определяет адрес на моем компе, но если файл скопировать на другой комп, то функция не извлекает адрес нового компа, а либо остается мой адрес, либо только нули, почему не пойму?
суть защиты заключается в том что программу можно копировать и это не страшно, просто во второй части которую я высылаю ежедневно зашит адрес клиента и если он запустит файл на другом компе то программа не выдаст информации, а файл защищен от изменений, для чайника это не преодолимая преграда, вряд ли кто догадается менять мас-адрес
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 21.03.06 01:36
тебе же говорят что макрос не обязательно выполнится. Офис запрос
делает, типа разрешать или не разрешить макрсы... к тому же и сам
макрос можно подредактировать итп... так что делать какую либо защиту
в VBA практически невозможно. Есди уже на то пошло, то ненадо
углуюблсятся в какие-то уникальные коды, которые получают через WMI
которая ещё не у всех включена итп Сделай всё проще, например
проверить дату последнего изминения explorer.exe и по простенькому
алгоритму наваять типа уникальный код...