Показать сообщение отдельно
Старый 25.07.2010, 17:44
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 1  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
По умолчанию Узнать ID компьютера

По долгу службы требуется узнать уникальный код компьютера, например md5(серийник_матери). Нужно для "регистрации" - то есть чтобы войти в приложение можно было по ключу, уникальному для каждого компьютера.

Встаёт вопрос, как это сделать и какую оболочку выбрать. Знающие люди говорят, что зинк - кривой и бажный, что то сделать без костылей на нём не получится и говорят смотреть в сторону air`а, однако проблема в том что запускаться ехешник (разработка только под вин) должен одним кликом, а установка эира и приложения сразу запрещена лицензией. Встаёт вопрос, как бы это делали Вы?

Про то, что любая защита ломается я знаю. Выбор остался на флеше потому что из фич, недоступных флешу мне нужно только это.

Добавлено через 2 часа 2 минуты
По сути, самыми вменяемыми способами которые я смог нагуглить - это выборка из реестра, только не совсем понятно, откуда же.
HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/SYSTEM говорит гугл, однако там нету серийников. Разве что Configuration data, только я в этом сомневаюсь.

Другой способ - это WMI, вроде zinc поддерживает работу с ним. Будем пытаться, буду рад информации по теме.

Добавлено через 4 часа 55 минут
Выбор пал на расширение проектора от alexcon`а, однако нечто то что нужно мне у него не реализовано, разве что PSystem.getComputerInfo(), но это не совсем то.

Цитата:
name=>MICROSOF-CA89DF
platformId=>500
lanRoot=>
loggedUsers=>2
lanGroup=>WORKGROUP
Буду биться дальше, подумываю над вызовом VBScript.

Добавлено через 7 часов 28 минут
Да, получилось! Вызов WMI из VBScript, работает как надо.
script.txt
Код:
Option Explicit
Function getSerial()
Dim objWMIService, objItem, colItems
Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")
For Each objItem in colItems
getSerial=objItem.SerialNumber
Next
End Function
Возвращаем первый из тех, что берём перебором. Пахнет быдлокодом, но VBScript я не знаю и это работоспособно. Это уже хорошо.

Код AS3:
PScript.initEngine();
if (!PScript.addScriptFromFile("script.txt")) PDialogs.msgBox(PScript.getScriptError());
var res:String = PScript.call("getSerial");
someTextField.text=res;
PScript.terminateEngine();
При закрытии всё равно всплывает ошибка:
Цитата:
Инструкция по адресу "0x10020a15" обратилась к памяти по адресу "0x58761460". Память не может быть "read".
Заодно заметил, что если не сделать initEngine перед тем, как добавлять скрипт - это крашит флешплеер)


Последний раз редактировалось Psycho Tiger; 26.07.2010 в 01:42.