Steam-x |
Отправлено: 29.09.2006, 17:43 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
Есть проблема — необходимо привязать программу к одному компу. Простейший, на мой взгляд, выход — узнать номер процессора, задать его в программе. При переносе программы на другой комп прога работать не будет. В ДОСе это делается легко, а как сие сделать в Винде.
|
|
EpoxDe1u |
Отправлено: 29.09.2006, 18:14 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 3
|
Такое чудо есть в реестре.
HLM->HARDWARE->.... |
|
Steam-x |
Отправлено: 02.10.2006, 08:21 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
QUOTE (EpoxDe1u @ 29.09.2006, 18:14) | Такое чудо есть в реестре.
HLM->HARDWARE->.... |
Если это — HLM->HARDWARE->CentralProcessor, то это не то что нужно. Мне нужен уникальный серийный номер процессора который стоит на данном компе. Модель и модификация процессора меня не интерисует, т.к. это не конфидециальная информация и она может быть одинаковой для целой кучи компов.
|
|
AVC |
Отправлено: 02.10.2006, 10:46 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE (Steam-x @ 29.09.2006, 16:43) | Есть проблема — необходимо привязать программу к одному компу. Простейший, на мой взгляд, выход — узнать номер процессора... |
Пара замечаний:
1. Далеко не все процессоры имеют серийный номер.
2. Таким образом программа привязывается не к "компу" (как хотелось) а к одной из его сменных составных частей ("процы" горят и заменяются не так редко).
3. Посмотрите в сторону специализированного ПО для защиты приложений. Ссылки можно легко найти в инете.
4. Если программу крадут — значит она кому-то нужна. Гордитесь. |
|
Steam-x |
Отправлено: 03.10.2006, 09:27 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
QUOTE (AVC @ 02.10.2006, 10:46) | 2. Таким образом программа привязывается не к "компу" (как хотелось) а к одной из его сменных составных частей ("процы" горят и заменяются не так редко).
|
На моей памяти ни один процессор не сгорел, и я ни разу не слышал о таком. Специфика моей работы исключает разброд и шатание в аппаратуре, поэтому если я буду знать о каких-то уникальных свойствах компа, то это даст мне "Безграничную Власть, типа кольца власти"
|
|
AVC |
Отправлено: 03.10.2006, 10:46 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE | На моей памяти ни один процессор не сгорел |
Вам или крупно везет или недостаточен объем памяти
QUOTE | И я ни разу не слышал о таком. |
Неправда. Я вам об этом говорил.
А еще бывают апргрейды, да мало-ли что еще.
Постановка вопроса в корне неправильна. Лицензия выделяется не компьютеру и тем более не какой либо его части а работнику. А уж при помощи чего он работает "правильное" приложение не должно интересовать. Это мое мнение. |
|
Gedeon |
Отправлено: 04.10.2006, 12:16 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (AVC @ 03.10.2006, 10:46) | Лицензия выделяется не компьютеру и тем более не какой либо его части а работнику. А уж при помощи чего он работает "правильное" приложение не должно интересовать. Это мое мнение. |
Кроме эмбэддед версий. Но это уже другая песня.
|
|
Steam-x |
Отправлено: 13.10.2006, 08:59 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
QUOTE (AVC @ 03.10.2006, 11:46) |
Постановка вопроса в корне неправильна. Лицензия выделяется не компьютеру и тем более не какой либо его части а работнику. А уж при помощи чего он работает "правильное" приложение не должно интересовать. Это мое мнение. |
Если честно, мне уже надоели филосоФФские размышления.
Постановка вопроса и в корне и в стебле и даже в листьях и цветочках и в пестиках и тычинках ПРАВИЛЬНАЯ. Возьмем это за аксиому. Я спросил именно то, что меня ИНТЕРЕСОВАЛО. Мне как раз и нужно привязать прогу к железу, а не к человеку, который может уволиться, заболеть или его могут забрать инопланетяни(Истина где-то рядом). А гонять за 2000 км для переустановки прог уменя особого желания нет. Защита паролями не катит, т.к. мы все знаем как обстоят дела с поролями Виндов и иных ПО(Наши еще и умудряются лезть на официальные сайты прог, водить ворованый код и чего-то еще требовать...)
Защита всякими железными примочками — вещь дорогая и в моем случае неоправданная.
Поэтому я хочу знать КАК ПРИВЯЗАТЬ ПРОГУ К КОНКРЕТНОМУ ЖЕЛЕЗУ.
Если Вы не знаете как это сделать, то просьба не тратить время на набор ответа. Я ценю Ваше время.
|
|
Admin |
Отправлено: 13.10.2006, 10:17 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Привяжите к mac-адресу сетевой карты.
http://borland.xportal.ru/forum/viewtopic.php?t=19330
Тогда при необходимости — сетевая карта переставляется
в другой компьютер и программа работает с этим компьютером,
но все равно только с одним, где установлена сетевуха с этим
mac-адресом.
CODE |
#include "nb30.h"
#include <windows.h>
#include <wincon.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include<conio.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <stdlib.h>
#include <sys\stat.h>
void __fastcall TForm1::Button2Click(TObject *Sender)
{
NCB Ncb;
LANA_ENUM lans;
struct
{ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
} Adapter;
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (char *)(&lans);
Ncb.ncb_length = sizeof(lans);
Netbios(&Ncb);
if (Ncb.ncb_retcode != NRC_GOODRET)
{ Memo1->Lines->Add("NCBENUM: " + AnsiString(Ncb.ncb_retcode));
return;
}
AnsiString text;
for (int i(0); i < lans.length; i++, Memo1->Lines->Add(text))
{ text = "LanN " + AnsiString(i) + " ";
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = lans.lana[i];
Netbios(&Ncb);
if (Ncb.ncb_retcode != NRC_GOODRET)
{ text += "NCBRESET: error " + AnsiString(Ncb.ncb_retcode);
continue;
}
memset(&Ncb, 0, sizeof (Ncb));
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = lans.lana[i];
// 0123456789ABCDEF
strcpy((char*)Ncb.ncb_callname, "* ");
Ncb.ncb_buffer = (char *) &Adapter;
Ncb.ncb_length = sizeof(Adapter);
Netbios(&Ncb);
if (Ncb.ncb_retcode != NRC_GOODRET)
text += "NCBASTAT: error " + AnsiString(Ncb.ncb_retcode);
else
{ for (int i(0); i < 6; i++) //// формируется строка mac для данного адаптера
text += AnsiString(i? "." : "") + IntToHex(int(Adapter.adapt.adapter_address[i] & 0xFF), 2);
}
} // all lana_num
}
//---------------------------------------------------------------------------
|
|
|
AVC |
Отправлено: 13.10.2006, 12:13 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE (Steam-x @ 13.10.2006, 08:59) | Если честно, мне уже надоели филосоФФские размышления.
...
Если Вы не знаете как это сделать, то просьба не тратить время на набор ответа. |
Я знаю как это сделать и даже разными способами для разных вариантов привязки. Но если помните, это началось как "пара замечаний" со скрытым предложением пересмотреть постановку задачи.
PS. Если вам надоели мосты посты можете смело их не читать. |
|
Admin |
Отправлено: 13.10.2006, 13:32 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Про процессор: (стр 40)
http://download.intel.com/design/Xeon/appl...ts/24161831.pdf
CODE |
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD t,m,b; //top,middle,botttom
DWORD serial[3];
_asm
{
mov eax,1 //programmer: I need a Service ?
//processor: what type baby?
//eax = 3 -->
//eax: top 32 bits are the processor signature bits
//programmer:this
cpuid //_emit 0x0f |cpuid mean this tow instruction
//_emit 0xa2 |instead of writing them
//
//mean:the sevice i want the processor serial number
mov t,eax // top 32 bits are the processor signature bits
/*
eax = 3 -->
ecx: middle 32 bits are the processor signature bits
edx: bottom 32 bits are the processor signature bits
*/
mov eax,3
cpuid
mov m,edx// middle 32 bits are the processor signature bits
mov b,ecx// bottom 32 bits are the processor signature bits
}
// copy the locals into the pointer variables passed in
serial[0] = b;
serial[1] = m;
serial[2] = t;
char temp;
AnsiString m_SN;
static char hex_chars[16] = {'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};
for (int dw_count = 2; dw_count>=0; dw_count--)
{
for (int bp=28; bp>=0; bp-=4)
{
DWORD nibble = (serial[dw_count] >> bp) & 0x0f;
temp = (char) hex_chars[nibble];
m_SN+=temp;
if ((bp == 16) || ((bp == 0) && (dw_count!=0)) )
m_SN+="-";
}
}
ShowMessage(m_SN); // серийный номер процессора ?
}
//---------------------------------------------------------------------------
|
|
|
Steam-x |
Отправлено: 16.10.2006, 13:08 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
QUOTE (Admin @ 13.10.2006, 14:32) | Про процессор... |
Большое спасибо! Буду пробовать.
Идея насчет сетевухи тоже неплохо, интересно, а со встроенными сетевухами все так же. Если да, то это получится привязка к материнке, что само по себе — хорошо.
|
|
Steam-x |
Отправлено: 16.10.2006, 13:14 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
QUOTE (AVC @ 13.10.2006, 13:13) | Я знаю как это сделать и даже разными ...
PS. Если вам надоели мосты посты можете смело их не читать. |
Знание-сила!
Спасибо за совет. В данном случае очень ценный
|
|
AVC |
Отправлено: 16.10.2006, 15:58 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE (кто-то @ когда-то) |
Каждый сам должен выхлебать свою меру глупостей, невежества и заблуждений. И пока он ее не выхлебал, с ним бесполезно разумно разговаривать.
| |
|
Steam-x |
Отправлено: 17.10.2006, 14:06 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 60
|
QUOTE (AVC @ 16.10.2006, 16:58) | кто-то, когда-то
|
Я так и понял, что Вы сейчас очень занятой человек. И у Вас не остается времени отвечать на вопросы.
|
|
AVC |
Отправлено: 17.10.2006, 15:39 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Если у вас есть информация "кто" и "когда" можете поделиться ею. Давно хотел узнать кто такую умную вещь сказал. |
|