Что нового

Как запретить юзеру копирование экзешника?

VermanVendetta13

Новичок
Сообщения
147
Репутация
0
AutoIt 3.3.12.0

Привет, Форумчане!

У меня есть файл.exe(электронная книга) я не хочу что бы любой, кто скачает этот файл мог его распространять. Как сделать так, что бы именно для этой програмки был запрет на ПКМ/копировать, cntrl+c и cntrl+a (и самому содержимому и самому файлу) плюс на всякий случай привязка к одному компьютеру.

Алгоритм примерно представляю такой себе

Программа отправляется на сторонний компьютер

ФайлIT.ехе (созданный в аутоит) содержит в себе скрипт открытия архива с паролем и запрет на копирование себя. (При этом открывается только на одном компьютере после запуска)

Архив открыт - далее. Происходит открытие моего файл.exe (сразу считывается "к примеру" мак адрес и в дальнейшем книга открывается только на этом компьютере) затем при совершенном входе программа должна запретить сочетания клавиш ПКМ/копировать, cntrl+c и cntrl+a (как содержимому так и файлу.ехе)

Затем файлIT.exe сам себя удаляет вместе с архивом и остается только файл.ехе который нельзя копировать.

Прошу писать только по делу.
P.S Так же прошу не писать нравоучения типа: "зачем тебе это нужно" "Ха ха тут и ламер это вскроет" и тому подобное. Мне не нужна супер пупер крутая защита. Нужна рассчитанная на простого человека не смыслящего в этом ничего.

Заранее благодарю и жду ответов!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
VermanVendetta13,
[info border=#0000ff float=left]С такой постановкой вопроса Вам надо в Стол заказов.
Переоформите тему в соответствии с Правилами обязательного оформления тем в разделе "Стол заказов" и я ее туда перенесу.[/info]


Добавлено:
Сообщение автоматически объединено:

Предупреждение За нарушение общих правил (пункт В.8):
Так как эта конференция называется "Русское сообщество AutoIt", язык общения на ней - Русский. Названия фирм или программных продуктов, аббревиатуры и т.д. должны быть написаны так, как они пишутся в оригинале, например не следует писать УСБ вместо USB. На форуме крайне не рекомендуется намеренно искажать русский язык и использовать "сетевой жаргон" на подобии "Аффтар выпей йадау!".


С уважением, ваш Глобальный модератор.
 

Teacher

Новичок
Сообщения
33
Репутация
0
Мне тоже кстати интересно как так можно сделать. Скиньте ссылку на тему, где будете задавать этот вопрос. Спасибо :IL_AutoIt_1:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Код:
#include <WinAPIDiag.au3>
#include <APIDiagConstants.au3>

_AppHardwareAttach()

MsgBox(64, 'Title', 'Program works.')

Func _AppHardwareAttach()
	Local $sHWID = _WinAPI_UniqueHardwareID(BitOR($UHID_MB, $UHID_BIOS))
	Local $sMyHWID = ''
	
	If Not @Compiled And $sMyHWID = '' Then
		Local $sRead = FileRead(@ScriptFullPath)
		Local $hFile = FileOpen(@ScriptFullPath, 2)
		FileWrite($hFile, StringRegExpReplace($sRead, '\$sMyHWID = [^\r\n]+', '$sMyHWID = ''' & $sHWID & '''', 1))
		FileClose($hFile)
		
		Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & @ScriptFullPath & StringStripWS('" ' & $CmdLineRaw, 2))
		
		Exit
	EndIf
	
	If Not @Compiled Then
		Return
	EndIf
	
	If Not ($sHWID == $sMyHWID) Then
		MsgBox(64, 'Title', 'Self destroy...', 3)
		Run(@ComSpec & ' /C Ping -n 2 localhost > Nul && Del /Q "' & FileGetShortName(@ScriptFullPath) & '"', '', @SW_HIDE)
		Exit
	EndIf
EndFunc


Запускаем перед компиляцией, переменной $sMyHWID будет присвоен уникальный ID железа, после чего можно компилировать.
Программа при запуске самоуничтожится на другом железе (привязка к мат. плате и Bios).
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
VermanVendetta13 [?]
на простого человека не смыслящего в этом ничего
Код:
#include <WinAPI.au3>
_WinAPI_CreateFile( @ScriptFullPath, 2, 2, 0 )


Добавьте это в шапку, пока скрипт запущен - его не скопировать.
 
Автор
V

VermanVendetta13

Новичок
Сообщения
147
Репутация
0
CreatoR сказал(а):
Код:
#include <WinAPIDiag.au3>
#include <APIDiagConstants.au3>

_AppHardwareAttach()

MsgBox(64, 'Title', 'Program works.')

Func _AppHardwareAttach()
	Local $sHWID = _WinAPI_UniqueHardwareID(BitOR($UHID_MB, $UHID_BIOS))
	Local $sMyHWID = ''
	
	If Not @Compiled And $sMyHWID = '' Then
		Local $sRead = FileRead(@ScriptFullPath)
		Local $hFile = FileOpen(@ScriptFullPath, 2)
		FileWrite($hFile, StringRegExpReplace($sRead, '\$sMyHWID = [^\r\n]+', '$sMyHWID = ''' & $sHWID & '''', 1))
		FileClose($hFile)
		
		Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & @ScriptFullPath & StringStripWS('" ' & $CmdLineRaw, 2))
		
		Exit
	EndIf
	
	If Not @Compiled Then
		Return
	EndIf
	
	If Not ($sHWID == $sMyHWID) Then
		MsgBox(64, 'Title', 'Self destroy...', 3)
		Run(@ComSpec & ' /C Ping -n 2 localhost > Nul && Del /Q "' & FileGetShortName(@ScriptFullPath) & '"', '', @SW_HIDE)
		Exit
	EndIf
EndFunc


Запускаем перед компиляцией, переменной $sMyHWID будет присвоен уникальный ID железа, после чего можно компилировать.
Программа при запуске самоуничтожится на другом железе (привязка к мат. плате и Bios).

Благодарю;)
 

darkwhite

Знающий
Сообщения
129
Репутация
5
OffTopic:
хм... а как это помешает скопировать начальный архив ?
или как вы себе представляете эту процедуру ? попросите пользователя сначала поставить вам ID железа?
и ака быть если у пользователя сгорела мамка ? он автоматом лишается права пользования вашей программой?
 
Верх