Что нового

Привязка программы к одному ПК

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
AutoIt: 3.
Версия: 1.0

Категория: Система / Реестр

Описание: Пример привязки Вашей программы к одному компьютеру

Код/Пример:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;=========================================================================================
; Для того чтобы проверить,запустите программу,зайдите в реестр и удалите созданный ключь
; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Binding , запустите программу и она выдаст
; ошибку.
;=========================================================================================
$ReadKey = Binding()
If $ReadKey = 0 Then
	MsgBox(16, "Ошибка", "Free distribution of the program is strictly forbidden", 5)
	Exit
EndIf	

$hForm = GUICreate('',400,300)

GUISetState()

While 1
	$aMsg = GUIGetMsg()
	Switch $aMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

; #FUNCTION# ====================================================================================================================
; Name...........: Binding
; Description....: Привязка программы к одной машине(ПК)
;                  При компиляции скрипта у него стандартно будет стоять аттрибут [А] 
;                  После первого запуска, функция считает уникальный ID компьютера и 
;                  запишет ключ в реестр с ID компьютера, далее установит аттрибут 
;                  программе [AT] и можно пользоваться программой....
;                  Аттрибут файлу устанавливается для того чтобы запись ключа
;                  не включилась произвольно на другом пк далее, ключ записывается в
;                  реестр для того чтобы при запуске программы на другом пк функция
;                  считывает ключ ез реестра и если его там нет или ключ не правильный
;                  то .....
; Syntax.........: Binding()
; Parameters ....: 
; Return values .: Успешно = 1
;                  Иначе   = 0
; Author ........: Sergey2210 
; Modified.......:
; Remarks .......:
; Related .......:
; Link ..........: http://autoit-script.ru/index.php?action=profile;u=3501
; E-mail.........: [email protected]
; Example .......: Yes
; ===============================================================================================================================
Func Binding()
	
	Global $_ProductId = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion','ProductId') ; Считываем ID компьютера
	
	$_sResult = 0 ; Результат
	
	$_hFileAttribut = FileGetAttrib(@ScriptFullPath) ; Считываем аттрибут программы
	
	If $_hFileAttribut = 'A' Then ; Если аттрибут программы = A то выполняются действия
	    If Not RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows','Binding') Then ; Если нет ключа то....
	        RegWrite('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows','Binding','REG_SZ',$_ProductId) ; Записываем ключ с уникальным ID
			FileSetAttrib(@ScriptFullPath, "+T", 0) ; Ставим аттрибут программе AT
			$_sResult = 1 ; Ставим положительный результат
		EndIf	
	EndIf	
	If $_hFileAttribut = 'AT' Then ; Если аттрибут программы = AT то....
		If RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows','Binding') = $_ProductId Then ; если наш ключ = ключу ID компьютера то
			$_sResult = 1 ; Ставим положительный результат
		Else 	
			$_sResult = 0 ; иначе ставим 0    
		EndIf  
	EndIf	
	
	Return $_sResult 
	
EndFunc ; ==> Binding()

Файл: Привязка.au3

Снимок: Нет снимка.

История версий:
v1.0

Источник: Русское сообщество AutoIt
Автор(ы): Sergey2210
 

lirikmel

Продвинутый
Сообщения
226
Репутация
84
а если сохранить exe до запуска ?..тогда ведь можно копировать и ставить на другие машины ...
 

shift72

Новичок
Сообщения
86
Репутация
2
Что то у меня не получается... Не создается такого в реестре. ось вин 7 64бит
 
Верх