Страницы: 1 2 След.
RSS
защита файла от открытия на чужом компьютере
 
Здравствуйте уважаемые форумчане! прочитал подобные темы, но не очень понял. Все таки возможно защитить файл от открытия его на чужом компьютере?  
например нужно пройти проверку по имени компьютера, если не прошел то пароль для разблокировки, или просто закрытие книги, или показать только один лист с Предупреждением!!! с учетом что макросы могут быть отключены.  
или это бестолковая затея?    
 
Спасибо.  
 
офф  
PS: в армию комиссию не прошел, так что буду стараться глубже изучать excel.
 
вот так покажет имя компьютера, сравнивайте при открытии и делайте выводы ))  
MsgBox CreateObject("WScript.Network").COMPUTERNAME
Редко но метко ...
 
все это возможно.  
 
но никто не помешает юзверю открыть проект и открыть скрытые листы безо всякого пароля...  
 
или открыть код(не очень сложно) и исправить проверку
Живи и дай жить..
 
По идее наоборот. Максимально всё заблокировать на тот случай если макросы отключены, и только в "тепличных" правильных условиях открытия книги разблокировать.  
Только стоит ли этим заниматься? Какой-нибудь Advanced Office Password Recovery и книга будет вскрыта.
 
Защитить файл от открытия его на чужом компьютере, на самом деле, очень просто.  
И неважно, это файл Excel, или любой другой.  
 
У меня на домашнем компе около тысячи файлов Excel, и ещё около 500.000 других файлов.  
И никто посторонний не может открыть ни один из этих файлов на своём компьютере.  
Догадываетесь, почему?
 
{quote}{login=EducatedFool}{date=24.11.2011 11:15}{thema=}{post}  
Догадываетесь, почему?{/post}{/quote}  
 
и почему же?
Редко но метко ...
 
наводящий вопрос - а на вашем сможет?
Живи и дай жить..
 
EducatedFool, это тот компьютер, который без сети? :)  
А если с сетью - я бы не был так категоричен :)
 
{quote}{login=слэн}{date=24.11.2011 11:09}{thema=}{post}все это возможно.  
 
но никто не помешает юзверю открыть проект и открыть скрытые листы безо всякого пароля...  
 
или открыть код(не очень сложно) и исправить проверку{/post}{/quote}  
В этом случае не нужна защита от продвинутых пользователей.... нужна защита от "пользователя клавиатуры" :) .... некоторые юзвери не знают как поменять картинку на рабочем столе, не говоря уже про VBA, но у них есть стойкое желание взять работу на дом(вместе с файлом эксель)...
 
ну я и говорю, что возможно..  
 
 
если есть сетевая папка, общая для всех, то можно к ней и привязаться
Живи и дай жить..
 
{quote}{login=GIG_ant}{date=24.11.2011 11:01}{thema=}{post}вот так покажет имя компьютера, сравнивайте при открытии и делайте выводы ))  
MsgBox CreateObject("WScript.Network").COMPUTERNAME{/post}{/quote}  
 
так? при этом поставить пароль на VBA  
Private Sub Workbook_Open()  
If CreateObject("WScript.Network").COMPUTERNAME = "АКСЕНОВА" Then  
MsgBox "!Hello!"  
Else  
MsgBox ("F*CK YOU")  
ThisWorkbook.IsAddin = True  
End If  
End Sub
 
Я так к сетевому файлу привязывался как-то:  
 
Function FileExists(FullFileName As String) As Boolean  
' returns TRUE if the file exists  
   FileExists = Len(Dir(FullFileName)) > 0  
End Function  
 
Sub Работа()  
If Not FileExists("\\имя_компа\test\true") Then  
   Exit Sub  
End If  
'далее работаем, если файл true (файл без расширения, просто true :) ) есть  
'можно конкретный другой файл указать, имя и расширение роли не играет
 
я бы  написал thisworkbook.close
Живи и дай жить..
 
можно так  
 
Private Sub Workbook_Open()  
   If CreateObject("WScript.Network").COMPUTERNAME = "АКСЕНОВА" Then  
       MsgBox "!Hello!"  
   Else  
       MsgBox ("НИЗЗЯ")  
       Me.Close False  
   End If  
End Sub
Редко но метко ...
 
thisworkbook.close true :)
 
{quote}{login=слэн}{date=24.11.2011 11:57}{thema=}{post}я бы  написал thisworkbook.close{/post}{/quote}  
 
это пробный вариант.)  
а можно через excel сделать так, чтобы файл удалился?    
thisworkbook.close  
delete me)))
 
Можно  
 
============================================================­==  
книга может сама себя уничтожить вот так:  
 
Sub KillMe()  
With ThisWorkbook  
.ChangeFileAccess xlReadOnly  
Kill .FullName  
.Close False  
End With  
End Sub  
 
Если у файла установлен флажок "Только чтение", Kill не сработает.  
Нужно перед Kill поставить  
setattr .FullName, 0  
 
============================================================­==
 
{quote}{login=Hugo}{date=24.11.2011 11:57}{thema=}{post}Я так к сетевому файлу привязывался как-то:  
 
Function FileExists(FullFileName As String) As Boolean  
' returns TRUE if the file exists  
   FileExists = Len(Dir(FullFileName)) > 0  
End Function  
 
Sub Работа()  
If Not FileExists("\\имя_компа\test\true") Then  
   Exit Sub  
End If  
'далее работаем, если файл true (файл без расширения, просто true :) ) есть  
'можно конкретный другой файл указать, имя и расширение роли не играет{/post}{/quote}  
можно привязаться к имени папки, если файлы могут меняться..  
 
тогда добавить еще проверку :  
 
Function FileExists(FullFileName As String) As Boolean  
' returns TRUE if the file exists  
   FileExists = Len(Dir(FullFileName)) > 0  
   if not FileExists then FileExists = Len(Dir(FullFileName & "\*")) > 0  
End Function
Живи и дай жить..
 
и вообще бы для данного случая назвал функцию NoFile..
Живи и дай жить..
 
см.файл (пример)
 
{quote}{login=АБВ}{date=24.11.2011 12:15}{thema=}{post}см.файл (пример){/post}{/quote}  
а пароль то какой?  
просто защита паролем не подойдет.
 
А интересно Advanced Office Password Recovery взломает пароль?  
(а так пароль а90х, на VBA ах90)
 
{quote}{login=Hugo}{date=24.11.2011 12:08}{thema=}{post}Можно  
 
============================================================­==  
книга может сама себя уничтожить вот так:  
{/post}{/quote}  
 
при выполнении вашей продцедуры удаления, выскакивает ошибка : "File not Found"  
и при отладке подсвечивает строку: см скрин.  
Не подскажите почему ругается ?
Редко но метко ...
 
у меня все работает. а это не может быть из-за события before_close?
 
{quote}{login=AKSENOV048}{date=24.11.2011 12:42}{thema=}{post}у меня все работает. а это не может быть из-за события before_close?{/post}{/quote}  
а вы на какое событие вставили эту продцедуру ?
Редко но метко ...
 
Это я цитату нашёл, сам именно атрибуты не менял.  
А хелп вот что говорит:  
 
A run-time error occurs if you try to set the attributes of an open file.  
 
Как это прикрутить к задаче - нужно подумать...  
Но удаление то работает.
 
Если нужно поменять атрибуты, то может быть сделать так - создать новую книгу с кодом (или эту сохранить как), эту закрыть, далее кодом новой книги поменять атрибут, удалить, новую закрыть без сохранения (или тоже удалить).  
Но как-то сложно получается...
 
а зачем в before_close close ?  
 
 
оно и так закроется, если только вы cancel=true не напишите..  
 
вы зациклитесь..
Живи и дай жить..
 
{quote}{login=GIG_ant}{date=24.11.2011 12:44}{thema=Re: }{post}{quote}{login=AKSENOV048}{date=24.11.2011 12:42}{thema=}{post}у меня все работает. а это не может быть из-за события before_close?{/post}{/quote}  
а вы на какое событие вставили эту продцедуру ?{/post}{/quote}  
 
я все это прилипил на событие открытия книги. если имя не совпадает файл удаляется. Все отлично работает  
 
Private Sub Workbook_Open()  
If CreateObject("WScript.Network").COMPUTERNAME <> "АКСЕНОВ" Then  
ThisWorkbook.IsAddin = True  
MsgBox ("F*CK YOU")  
Application.DisplayAlerts = False  
Call KillMe  
Application.DisplayAlerts = True  
End If  
End Sub  
 
Sub KillMe()  
With ThisWorkbook  
.ChangeFileAccess xlReadOnly  
SetAttr .FullName, 0  
Kill .FullName  
.Close True  
End With  
End Sub
 
Всем большое спасибо!  
только я не понял, если макросы на другом компьютере отключены, то все это работать не будет?!
Страницы: 1 2 След.
Читают тему
Наверх