Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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-сайт: dimit.pochta.ru
 Профиль | | #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.

Option Explicit
  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-сайт: dimit.pochta.ru
 Профиль | | #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 и по простенькому
алгоритму наваять типа уникальный код...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам