Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > программа в Excel VBA


Автор: летучий 21.3.2007, 09:06
Здравствуйте.
У меня два вопроса по этой теме.
Сделал программу в бейсике в экселе.

1. Как сделать, чтобы другие пользователи не могли просмотреть код программы. Как то видел можно запоролить все кнопки. Но не знаю как.  smile 

2. Как сделать, чтобы эта программа работала только на одном компьютере.
Т.е. при установке или копировании ее на другой комп прога спрашивала пароль.
Т.е. чтобы она при запуске проверяла номер жесткого диска.
Я просто хочу сделать прогу платной.

Автор: Дмит 21.3.2007, 10:26
В простейшем случае (если Вашу защиту не захотят сломать):
1. В редакторе Tools->VBAProject Project Properties...->Protection->Lock project for viewing
2. При запуске лучше проверять ключ в реестре (Ведь смена винчестера не есть смена рабочего места)

Вся защита кода VBA легко обходится даже при использовании дополнительных ухищрений.
Однако если прога стоящая, то применить некоторые из них нужно. 
Ищи рекомендации в поиске - тема часто обсуждаемая.

Автор: Мих 21.3.2007, 13:47
Спасибо! Попробую! smile 

Автор: Мих 21.3.2007, 14:34
Цитата(Дмит @ 21.3.2007,  10:26)
1. В редакторе Tools->VBAProject Project Properties...->Protection->Lock project for viewing
2. При запуске лучше проверять ключ в реестре (Ведь смена винчестера не есть смена рабочего места)


 В редакторе Tools->VBAProject Project Properties...->Protection->Lock project for viewing
сделал, но ничего не изменилось. Галочку поставил, пароль написал. Снова захожу - пароль не спрашивает.
smile

 2. При запуске лучше проверять ключ в реестре (Ведь смена винчестера не есть смена рабочего места)

А как создать этот ключ в реестре?

Автор: Мих 21.3.2007, 14:51
Цитата(Мих @ 21.3.2007,  14:34)
сделал, но ничего не изменилось. Галочку поставил, пароль написал. Снова захожу - пароль не спрашивает.
smile

 

заработало, надо было закрыть файл!  smile 

Автор: Akina 21.3.2007, 19:30
Цитата(Мих @  21.3.2007,  15:34 Найти цитируемый пост)
как создать этот ключ в реестре?

GetSetting/SaveSetting

Автор: Мих 23.3.2007, 08:36
Цитата(Akina @ 21.3.2007,  19:30)
этот ключ в реестре?

GetSetting/SaveSetting[/QUOTE]
 smile  и у меня возникло еще с десяток вопросов  smile 

Автор: Akina 23.3.2007, 09:24
Цитата(Мих @  23.3.2007,  09:36 Найти цитируемый пост)
у меня возникло еще с десяток вопросов  

F1

Автор: Akina 23.3.2007, 09:59
Насчет проверяемого при старте ключа системы - очень устойчивое определение рабстанции (к тому же на которое не влияет смена железа - определяется фактически инсталляция ОС) делается по CLSID администратора машины. Среди юзеров у него самый короткий CLSID, и генерится он при установки ОС рандомом. Повторение excluded...

Автор: Мих 8.6.2007, 14:07
Private Sub CommandButton1_Click()
Dim fs, d, s, t
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
Лист1.Cells(1, 1) = d.SerialNumber
MsgBox ("Запишите номер и сообщите его автору"), (d.SerialNumber)
End Sub

Нашел вот такой макрос. От нажатия кнопки записывается серийник.
Но, почему то на работе не идет макрос. Может что-то админ заблокировал?
Безопасность макросов - низкая.
Дома прекрасно работает.

Автор: bom 8.6.2007, 14:51
Может и заблокировал, а может прав не хватает. Спроси, чего гадать. 
Попробуй получить SN логического диска без использования FSO:
Код

Private Declare Function GetVolumeInformation 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 Sub CommandButton1_Click()
Dim nSerial as long
if GetVolumeInformation ("c:\", String(255, 0), 255, nSerial, 0, 0, String(255, 0), 255) then
Лист1.Cells(1, 1) = Trim(Str(nSerial))
MsgBox ("Запишите номер и сообщите его автору") & (Trim(Str(nSerial)))
end if
End Sub

Автор: Мих 8.6.2007, 14:56
Спасибо, попробую так.
Я разобрался в своем варианте - у меня антивирусник блокирует макрос.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)