Страницы: 1 2 След.
RSS
Как защитить книгу Excel?
 
Подскажите пожалуйста, можно ли в VBA (Excel) написать какую-то функцию, которая проверяла бы, например, номер процессора или еще какой-то уникальный параметр и, если он не совпадает с допустимым диапазоном, то книга не запускалась бы.
 
{quote}{login=ancheville}{date=17.05.2010 11:36}{thema=Как защитить книгу Excel?}{post}Подскажите пожалуйста, можно ли в VBA (Excel) написать какую-то функцию, которая проверяла бы, например, номер процессора или еще какой-то уникальный параметр и, если он не совпадает с допустимым диапазоном, то книга не запускалась бы.{/post}{/quote}  
есть пример с ip , есть с мас адресом сетевой карты, есть с кодом раздела  
вам что по душе?
Спасибо
 
{quote}{login=R Dmitry}{date=17.05.2010 11:45}{thema=Re: Как защитить книгу Excel?}{post}{quote}{login=ancheville}{date=17.05.2010 11:36}{thema=Как защитить книгу Excel?}{post}Подскажите пожалуйста, можно ли в VBA (Excel) написать какую-то функцию, которая проверяла бы, например, номер процессора или еще какой-то уникальный параметр и, если он не совпадает с допустимым диапазоном, то книга не запускалась бы.{/post}{/quote}  
есть пример с ip , есть с мас адресом сетевой карты, есть с кодом раздела  
вам что по душе?{/post}{/quote}  
 
Мне интересен пример с mac-адресом сетевой карты и с кодом раздела...
 
Sub SpecificationsProcessor()  
Dim strComputer As String  
Dim objWMIService As Object, colProcessor As Object, objProcessor As Object  
strComputer = "."  
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
Set colProcessor = objWMIService.ExecQuery("SELECT * FROM Win32_Processor")  
For Each objProcessor In colProcessor  
Debug.Print "ProcessorId: " & objProcessor.ProcessorId  
MsgBox "ProcessorId: " & objProcessor.ProcessorId  
Next  
End Sub
 
{quote}{login=Юрий М}{date=17.05.2010 11:46}{thema=}{post}Sub SpecificationsProcessor()  
Dim strComputer As String  
Dim objWMIService As Object, colProcessor As Object, objProcessor As Object  
strComputer = "."  
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
Set colProcessor = objWMIService.ExecQuery("SELECT * FROM Win32_Processor")  
For Each objProcessor In colProcessor  
Debug.Print "ProcessorId: " & objProcessor.ProcessorId  
MsgBox "ProcessorId: " & objProcessor.ProcessorId  
Next  
End Sub{/post}{/quote}  
 
Юрий М - благодарю за быстры ответ по теме!
 
А можно определять серийный номер диска С  
 
Sub GetDrvSerialNumber()  
  'Определяем номер серийного диска С на вашем компьютере  
  MsgBox Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber)  
End Sub  
     
 
  допустим он будет BE164BD1  
  тогда можно написать такой код и поместить его в модуль ЭтаКнига (ThisWorkbook)  
 
Private Sub Workbook_Open()  
  If Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) <> BE164BD1 Then  
     ThisWorkbook.Close False  
  End If  
End Sub
 
{quote}{login=ancheville}{date=17.05.2010 11:36}{thema=Как защитить книгу Excel?}{post}Подскажите пожалуйста, можно ли в VBA (Excel) написать какую-то функцию, которая проверяла бы, например, номер процессора или еще какой-то уникальный параметр и, если он не совпадает с допустимым диапазоном, то книга не запускалась бы.{/post}{/quote}  
вот вам пример где то на форуме нашел  
admin  
admin
Спасибо
 
{quote}{login=ancheville}{date=17.05.2010 11:36}{thema=Как защитить книгу Excel?}{post}Подскажите пожалуйста, можно ли в VBA (Excel) написать какую-то функцию, которая проверяла бы, например, номер процессора или еще какой-то уникальный параметр и, если он не совпадает с допустимым диапазоном, то книга не запускалась бы.{/post}{/quote}  
 
Sub Test()  
   Dim wsh As Object  
   Dim RegEx As Object, RegM As Object  
   Dim FSO As Object, fil As Object  
   Dim ts As Object, txtAll As String, TempFil As String  
   Set wsh = CreateObject("WScript.Shell")  
   Set FSO = CreateObject("Scripting.FileSystemObject")  
   Set RegEx = CreateObject("vbscript.regexp")  
   TempFil = "C:\myip.txt"  
 
   wsh.Run "%comspec% /c ipconfig > " & TempFil, 0, True  
   With RegEx  
       .Pattern = "(\d{1,3}\.){3}\d{1,3}"  
       .Global = False  
   End With  
   Set fil = FSO.GetFile(TempFil)  
 
   Set ts = fil.OpenAsTextStream(1)  
   txtAll = ts.ReadAll  
   Set RegM = RegEx.Execute(txtAll)  
 
   ActiveSheet.Range("A1").Value = RegM(0)  
   ActiveSheet.Range("A1").EntireColumn.AutoFit  
   ts.Close  
 
   Kill TempFil  
       
   Set ts = Nothing  
   Set wsh = Nothing  
   Set fil = Nothing  
   Set FSO = Nothing  
   Set RegM = Nothing  
   Set RegEx = Nothing  
End Sub
Спасибо
 
{quote}{login=R Dmitry}{date=17.05.2010 11:53}{thema=Re: Как защитить книгу Excel?}{post}{quote}{login=ancheville}{date=17.05.2010 11:36}{thema=Как защитить книгу Excel?}{post}Подскажите пожалуйста, можно ли в VBA (Excel) написать какую-то функцию, которая проверяла бы, например, номер процессора или еще какой-то уникальный параметр и, если он не совпадает с допустимым диапазоном, то книга не запускалась бы.{/post}{/quote}  
вот вам пример где то на форуме нашел  
admin  
admin{/post}{/quote}  
 
К Dmitry - благодарю за быстры ответ по теме!
 
{quote}{login=}{date=17.05.2010 11:52}{thema=}{post}А можно определять серийный номер диска С  
 
Sub GetDrvSerialNumber()  
  'Определяем номер серийного диска С на вашем компьютере  
  MsgBox Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber)  
End Sub  
     
 
  допустим он будет BE164BD1  
  тогда можно написать такой код и поместить его в модуль ЭтаКнига (ThisWorkbook)  
 
Private Sub Workbook_Open()  
  If Hex$(CreateObject("Scripting.FileSystemObject").GetDrive("C").SerialNumber) <> BE164BD1 Then  
     ThisWorkbook.Close False  
  End If  
End Sub{/post}{/quote}  
 
<лагодарю за быстры ответ по теме!
 
Юрий М, что-то у меня пустое окно высвечивается со строкой "ProcessorId: " и в Debug тоже пустое "ProcessorId: ", может из-за того, что у меня 4 ядра? Core2 Quad ?  
 
P.C. Я не топикстартер этой темы
 
У меня "дву-ядрёный" - оба показывает. Может быть влияет 64/32? У меня 32-битная.
 
R Dmitry, Юрий М, может отправляйте автора... Иначе планета преврратится в форум вирусописателей. ИМХО.
Я сам - дурнее всякого примера! ...
 
{quote}{login=KuklP}{date=18.05.2010 12:05}{thema=}{post}R Dmitry, Юрий М, может отправляйте автора... Иначе планета преврратится в форум вирусописателей. ИМХО.{/post}{/quote}  
топикстарт Вы вирусы писать не будете?
Спасибо
 
Топикстартер - "Поздно"
 
Топикстартер - это я?
 
{quote}{login=Юрий М}{date=18.05.2010 12:02}{thema=}{post}У меня "дву-ядрёный" - оба показывает. Может быть влияет 64/32? У меня 32-битная.{/post}{/quote}  
 
у меня тоже 32-bit (
 
А так?  
Sub Test()  
Dim Computer As String  
Dim WMI As Variant  
Dim Items As Variant  
Dim Item As Variant  
Computer = "."  
Set WMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")  
Set Items = WMI.ExecQuery("Select * from Win32_Processor")  
For Each Item In Items  
Debug.Print Item.ProcessorId  
MsgBox Item.ProcessorId  
Next  
End Sub
 
хм, а так ошибка 94 "Invalid use of Null" на строке:  
MsgBox Item.ProcessorId  
 
а в Debug-окне написано "Null"
 
Вот этот код тоже почти пустое сообщение создаёт  
 
Sub Example_3()  
Dim objCollection As Object, objWMI As Object, objItem As Object  
   Set objWMI = GetObject("winmgmts:\\.\root\CIMV2")  
   Set objCollection = objWMI.ExecQuery("select * from Win32_Processor")  
   For Each objItem In objCollection  
       MsgBox "Caption: " & objItem.Caption & vbCrLf & _  
           "Name: " & objItem.Name & vbCrLf & _  
           "ProcessorId: " & objItem.ProcessorId & vbCrLf & _  
           "ProcessorType: " & objItem.ProcessorType & vbCrLf & _  
           "Revision: " & objItem.Revision & vbCrLf & _  
           "Version: " & objItem.Version & vbCrLf & vbCrLf & _  
           "SystemName: " & objItem.SystemName  
           Exit For  
   Next  
End Sub  
 
Есть только Caption, Name и System Name
 
У меня сработал. Я читал, что не все процессоры сообщают свой ID. Насколько верна эта информация - мне судить трудно.
 
Ну, фиг с ним ) Мы дали топикстартеру идея для размышления )
 
Попробуйте запустить этот код:  
Sub Info()  
   Dim i As Integer  
   On Error Resume Next  
   For i = 1 To 29  
       Cells(i, "A") = Environ(i)  
   Next  
End Sub  
Хоть что-нибудь про процессор есть? Строки 15:18
 
Вот что написал    
 
NUMBER_OF_PROCESSORS=4  
OS=Windows_NT  
PROCESSOR_ARCHITECTURE=x86  
PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel  
PROCESSOR_LEVEL=6  
PROCESSOR_REVISION=170a  
 
 
P.S. У меня проц "Intel® Core™2 Quad CPU  Q9650  @ 3.00GHz"  
Windows 7
 
А строка  MsgBox "Caption: " & objItem.Caption в выложенном мною коде (Sub Example_3()) выдаёт такую строчку  
 
x64 Family 6 Model 23 Stepping 10  
 
не пойму при чём тут "х64"
 
Намекает, наверное, что могёт и с 64 работать
 
Добрый вечер.  
Ребята, пожалуйста подскажите как защитить книгу так, что-бы кто либо попытался бы войти через Visual Basic, то появилось бы сообщение, которое прикреплено ниже.  
Такой защитой защищена надстройка"PLEX", находящаяся на этом ресурсе.  
Заранее благодарю
 
Защитить проект, наверное? Правый клик на проекте - Свойства - Закладка Защита.
 
{quote}{login=Юрий М}{date=18.12.2010 10:38}{thema=}{post}Защитить проект, наверное? Правый клик на проекте - Свойства - Закладка Защита.{/post}{/quote}  
 
Юрий М, как вы предлагаете, появляется другое сообщение, файл приложен к сообщению.Таким образом я защищал, но защита снимается за 5 секунд программой Advanced Office Password Recovery v4.11, сегодня проводил эксперимент, а "PLEX"    
не  взломаешь,и поэтому так же хочется защитить проект.
 
Для книги (2003): Сохранить Как - Сервис - Общие параметры
Страницы: 1 2 След.
Читают тему
Наверх