C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 Здравствуйте, гость ( Вход | Регистрация )   Скачать форум | Поиск по Форуму | Участники | Помощь
 Поиск по:   сайтy   
   архиву форума   
  ОтветитьНовая темаНовый опрос
Пророль, Как сделать пороль на программу?
« предыдущая тема | следующая тема » Подписаться на тему | Отправить тему на E-mail | Распечатать тему
MF_Forever
Отправлено: 14.02.2007, 23:22 Цитировать


Ученик-кочегар


Группа: Участник
Сообщений: 5
Пользователь № 2974
Регистрация: 14.11.06



yu.gif Я хочу сделать так, что кагда открываеш программу первый раз, то она выдает окошко куда надо ввести пороль, если ввел неправильный - закрыть, и так до тех пор пока не ввел правильный. Когда введеш правильный пороль этого окна - нет. Если кто знает как это сделать в 6Buildere, ПОМОГИТЕ! victory.gif
 
Послать сообщение E-mail адрес  Top
AVC
Отправлено: 15.02.2007, 10:23 Цитировать


Ветеран


Группа: Модератор
Сообщений: 1583
Пользователь № 655
Регистрация: 19.05.04



Что значит "открываеш программу первый раз" - первый раз сегодня / на этой неделе / на йтой машине / на этой ОС ... ?

В чем нужна помощь - как открыть окно до запуска / где хранить информацию о числе запусков ... ?
 
Послать сообщение E-mail адрес ICQ  Top
nawok78
Отправлено: 15.02.2007, 13:04 Цитировать


Станционный диспетчер


Группа: Участник
Сообщений: 115
Пользователь № 3883
Регистрация: 24.01.07



А поискать на форуме - не судьба?
Например тут!!!!
 
Послать сообщение E-mail адрес  Top
AVC
Отправлено: 15.02.2007, 17:09 Цитировать


Ветеран


Группа: Модератор
Сообщений: 1583
Пользователь № 655
Регистрация: 19.05.04



2nawok78
Это вариант решения для случая опроса при каждом запуске. Вы уверены, что именно это нужно MF_Forever?
 
Послать сообщение E-mail адрес ICQ  Top
MF_Forever
Отправлено: 16.02.2007, 00:03 Цитировать


Ученик-кочегар


Группа: Участник
Сообщений: 5
Пользователь № 2974
Регистрация: 14.11.06



Мне надо, что то на подобии системы защиты.
Ответ AVC: "Первый раз" - после установки.
 
Послать сообщение E-mail адрес  Top
AVC
Отправлено: 16.02.2007, 10:36 Цитировать


Ветеран


Группа: Модератор
Сообщений: 1583
Пользователь № 655
Регистрация: 19.05.04



QUOTE

Мне надо, что то на подобии системы защиты.
Ответ AVC: "Первый раз" - после установки.

Насколько "сильная" защита вам нужна? Есть специальные пакеты.
Если от дурака, то например
- записи в реестре при "первый раз на данной ос" (не сломает только ленивый)
- регистрация в не зависимом от пользователя месте (например на сайте) при "первый раз для данного пользователя"

Место опроса я бы выбрал в WinMain (см. пост Shagg от 09.02.2007, 09:52 в ссылке nawok78)
Алгоритм проверки "первости" расположил бы в LoginForm.


PS. А что, действительно есть что защищать? Есть правило - стоимость защиты не должна превосходить стоимости защищаемого объекта.
 
Послать сообщение E-mail адрес ICQ  Top
MF_Forever
Отправлено: 17.02.2007, 23:06 Цитировать


Ученик-кочегар


Группа: Участник
Сообщений: 5
Пользователь № 2974
Регистрация: 14.11.06



Сначало хотябы от дурака. Я не очень силён в C++, можете мне подсказать:
1. Как занести в реестр данные при первой "удачной" загрузке проги.
Пример: В HKEY_CURRENT_USER\Physics\Registration есть 2 строчки с названиями Name и Password, надо прописать значения.;
2. Как считать из реестра выше упомянутые данные и сравнить их с правильными данными которые находятся в переменных char name, pas;.
И если вас не затруднит можете подробнее рассказать про спец. пакеты.
 
Послать сообщение E-mail адрес  Top
AVC
Отправлено: 19.02.2007, 12:08 Цитировать


Ветеран


Группа: Модератор
Сообщений: 1583
Пользователь № 655
Регистрация: 19.05.04



CODE

bool AskPassword() { ShowMessage("Функция опроса и сравнения пароля, возврат true - можно работать"); return true; }

void __fastcall TForm1::Bt_RegClick(TObject *Sender)
{

AnsiString SubKey = "Software\My Unique Name\" + ExtractFileName(Application->ExeName);
HKEY  hKey;
DWORD what;
long  lerr;
lerr = RegCreateKeyEx
 (HKEY_CURRENT_USER
 ,SubKey.c_str()
 ,0
 ,""
 ,REG_OPTION_NON_VOLATILE
 ,KEY_ALL_ACCESS
 ,NULL
 ,&hKey
 ,&what
 );
if (lerr != ERROR_SUCCESS)
{  ShowMessage("Не могу открыть/создать ключ");
   return;
}

char  *name = "access";
DWORD type  = REG_DWORD;
DWORD acc   = 0;
DWORD size  = sizeof(acc);

if (what == REG_CREATED_NEW_KEY)
   lerr = RegSetValueEx   (hKey, name, 0,     type, LPBYTE(&acc), size);
else
   lerr = RegQueryValueEx (hKey, name, NULL, &type, LPBYTE(&acc), &size);

if (lerr != ERROR_SUCCESS)
{  AnsiString str = AnsiString::StringOfChar(' ', 250);
   FormatMessage(
  FORMAT_MESSAGE_FROM_SYSTEM,
  NULL,
  lerr,
  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
  str.c_str(),
  str.Length(),
  NULL
 );
   ShowMessage("Не могу получить значение для ключа\r\n" + str);
   return;
}

if (acc == 0 && AskPassword())
{  acc = 1;
   lerr = RegSetValueEx   (hKey, name, 0, type, LPBYTE(&acc), size);
}

RegCloseKey(hKey);
}


Это даже не вариант, а так, направление, и пример работы с реестром.
 
Послать сообщение E-mail адрес ICQ  Top
6 ответов с: 14.02.2007, 23:22 Подписаться на тему | Отправить тему на E-mail | Распечатать тему

Back to Вопросы программирования в C++Builder
ОтветитьНовая темаНовый опрос