Что нового

Привязка к компьютеру

Greens

Новичок
Сообщения
20
Репутация
0
Всем привет,подскажите,как средствами autoit можно привязать программу к железу данного компьютера,чтобы её невозможно было запустить на другом пк?Заранее благодарю за ответы :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
попробуй прикрутить скрипт к серийному номеру харда. например как тут
http://autoit-script.ru/index.php?topic=1274.msg9166#msg9166
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Greens
Попробуйте так:
Код:
; Generated by AutoIt ScriptOMatic

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$OutputTitle = ""
$Output = ""
$OutputTitle &= "Computer: " & $strComputer & @CRLF
$OutputTitle &= "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct", "WQL", _
		$wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) Then
	Local $Object_Flag = 0
	For $objItem In $colItems
		$Object_Flag = 1
		$Output &= "Caption: " & $objItem.Caption & @CRLF
		$Output &= "Description: " & $objItem.Description & @CRLF
		$Output &= "IdentifyingNumber: " & $objItem.IdentifyingNumber & @CRLF
		$Output &= "Name: " & $objItem.Name & @CRLF
		$Output &= "SKUNumber: " & $objItem.SKUNumber & @CRLF
		$Output &= "UUID: " & $objItem.UUID & @CRLF
		$Output &= "Vendor: " & $objItem.Vendor & @CRLF
		$Output &= "Version: " & $objItem.Version & @CRLF
		If MsgBox(1, "WMI Output", $Output) = 2 Then ExitLoop
		$Output = ""
	Next
	If $Object_Flag = 0 Then MsgBox(1, "WMI Output", $OutputTitle)
Else
	MsgBox(0, "WMI Output", "No WMI Objects Found for class: " & "Win32_ComputerSystemProduct")
EndIf
 

kzru_hunter

Осваивающий
Сообщения
144
Репутация
49
madmasles У меня почему-то вот что вывелось:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
kzru_hunter
У меня все нормально показывает. Вот ссылка на ScriptOmatic.au3, посмотрите сами.
Или попробуйте как посоветовал Kaster привязаться к жесткому диску:
Код:
$strComputer = "."

$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * from Win32_PhysicalMedia")

For $objItem In $colItems
    MsgBox(0, "HDD serial number", $objItem.SerialNumber)
Next
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
А можно к реестру привязаться ... например к этим ключам

Код:
$Key1 = RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS", "BaseBoardManufacturer")
$Key2 = RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS", "BaseBoardProduct")
$Key3 = RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS", "BIOSVendor")
$Key4 = RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString")
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
FlatX007
У меня первых трех ключей нет.
Windows XP SP3 ноутбук Samsung. :(
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Привязываться к жесткому диску не кошерно, это наиболее часто заменяемая деталь в компьютере (я думаю). Самое то, это привязаться к мат. плате.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
madmasles
Код:
Func _MB()
$oService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
	If @error Then
		Exit
	EndIf

	For $oMB In $oService.ExecQuery("SELECT * FROM Win32_BaseBoard")
		MsgBox(0,"",$oMB.Manufacturer & @CRLF& _
		$oMB.Product & @CRLF& _
		$oMB.SerialNumber & @CRLF)
	Next
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Garrett
Спасибо.
Но, я так пробовал. У меня ничего не показывает. :wacko:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
madmasles
дурацкий вопрос, а ты пробовал вызвать функцию? :whistle:
я в смысле, что в самом скрипте приведенном Garrett просто функция. я тоже не сразу обратил внимание.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Kaster
Конечно вызывал функцию и ScriptOmatic`ом полную функцию сгенерировал. Не работает она у меня. :(
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
madmasles
Давайте для начала посмотрим, что вам выдаст этот скрипт.
Код:
$oService  = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
If IsObj($oService) Then 
	MsgBox(0,"Validation:","This Object!")
	_MB($oService)
Else
	MsgBox(0,"Error:","This is not Object!")
EndIf

Func _MB($oService)
    For $oMB In $oService.ExecQuery("SELECT * FROM Win32_BaseBoard")
        MsgBox(0,"",$oMB.Manufacturer & @CRLF& _
        $oMB.Product & @CRLF& _
        $oMB.SerialNumber & @CRLF)
    Next
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Garrett
Ваш скрипт у меня выдает "MsgBox(0,"Validation:","This Object!")" и закрывается. При этом другие функции WMI у меня работают. Ничего не понимаю.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
А у вашей учётной записи права Администратора? ;)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Garrett
Я один пользователь-админ в системе. Может, из-за того, что у меня ноутбук старый (Samsung P29, ему около 5-ти лет), не все функции работают?
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
У меня так показало :

Gigabyte Technology Co., Ltd.
EP45-DS3L
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
madmasles
Прямо теряюсь в догадках :scratch:
Попробуйте ещё вот так:
Код:
Dim $WbemFlagReturnImmediately = 0x10
Dim $WbemFlagForwardOnly = 0x20

$oService  = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
If IsObj($oService) Then 
	MsgBox(0,"Validation:","This Object!")
	_MB($oService)
Else
	MsgBox(0,"Error:","This is not Object!")
EndIf

Func _MB($oService)
    For $oMB In $oService.ExecQuery("SELECT * FROM Win32_BaseBoard","WQL", BitOR($WbemFlagReturnImmediately, $WbemFlagForwardOnly))
        MsgBox(0,"",$oMB.Manufacturer & @CRLF& _
        $oMB.Product & @CRLF& _
        $oMB.SerialNumber & @CRLF)
    Next
EndFunc
 
Верх