Форум программистов, компьютерный форум CyberForum.ru

Как реализовать регистрацию программы? - C++

Восстановить пароль Регистрация
 
Dimoza
0 / 0 / 0
Регистрация: 16.05.2010
Сообщений: 17
18.11.2011, 22:40     Как реализовать регистрацию программы? #1
Нужно чтобы программа просила регистраии, если её не пройти то она работает с ограничением. Подскажите как это лучше реализовать? До этого работал только с консольными приложениями. Как прочитать из текстбоксов отведенный под серийный номер, и как с кнопками работать? Знаю что нуб и что гугл рулит, просто мне нужно этот курсач за несколько дней сделать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2011, 22:40     Как реализовать регистрацию программы?
Посмотрите здесь:

C++ Написать регистрацию игроков к игре крестики-нолики
C++ как реализовать!!!!
Turbo C++ реализовать для программы многоплатформенность C++
незнаю как вывести полное решение для задачки.смысл улавливаю, а как реализовать - туплю C++
C++ Доработка программы: реализовать возможность работы с шестнадцатеричными числами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
13952 / 8783 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
18.11.2011, 22:55     Как реализовать регистрацию программы? #2
Есть такая функция GetVolumeInformation
Ее 4-й параметр - адрес long, куда заносится серийный номер логического диска, который записывается на диск во время его форматирования
Dimoza
0 / 0 / 0
Регистрация: 16.05.2010
Сообщений: 17
18.11.2011, 23:04  [ТС]     Как реализовать регистрацию программы? #3
Не понял тебя...Ты это к чему, продолжи мысль...
Delpix
delpix.ru
 Аватар для Delpix
19 / 19 / 1
Регистрация: 06.05.2011
Сообщений: 235
18.11.2011, 23:11     Как реализовать регистрацию программы? #4
GetVolumeInformation

Описание:
function GetVolumeInformation(lpRootPathName: PChar;
lpVolumeNameBuffer: PChar; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD;
var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
lpFileSystemNameBuffer: PChar; nFileSystemNameSize: DWORD): BOOL;

Возвращает информацию о файловой системе и объеме корневой директории(обьеме тома файловой системы).

Параметры:
lpRootPathName: Строка содержащая путь к корневой директории. Если параметр равен NULL, то будет использована текущая корневая директория. Если парметр является именем UNC, то после параметра должна обязательно следовать косая черта, напрмер: "\\MyServer\MyShare" должен быть определен как "\\MyServer\MyShare\".

lpVolumeNameBuffer: Строка содержащая буфер имени тома.

nVolumeNameSize: Содержит длинну в символах имени тома. Этот параметр игнорируется если параметр имени тома не поставлен.

lpVolumeSerialNumber: Указатель на переменную которая получает серийный номер тома. Этот парметр может быть равен NULL.

lpMaximumComponentLength: Указатель на переменную, возвращающую максимальную длинну имени файла, поддерживаемую текущей файловой системой. Параметр предназначен для того чтобы указать что текущей файловой системой используются длинные имена. Например для FAT поддерживающей длинные имена, функция возвращает величину 255.

lpFileSystemFlags: Указатель на переменную которая возвращает флаги связанные с текущей файловой системой. Этот параметр может быть комбинацией любых флагов кроме FS_FILE_COMPRESSION и FS_VOL_IS_COMPRESSED которые взаимно исключены:

FS_CASE_IS_PRESERVED - Если этот флаг установлен, файловая система сохраняет имя файла на диске.
FS_CASE_SENSITIVE - Если этот флаг установлен, файловая система поддерживает контекстно-зависимые имена файлов.
FS_UNICODE_STORED_ON_DISK - Если этот флаг установлен, файловая система поддерживает имена файлов в Unicode.
FS_PERSISTENT_ACLS - Если этот флаг установлен, файловая система сохраняет и осуществляет ACL. Например, NTFS сохраняет и осуществляет ACL,а FAT нет.

FS_FILE_COMPRESSION - Файловая система поддерживает сжатие файлов.
FS_VOL_IS_COMPRESSED - Том является сжатым; например DoubleSpace.

lpFileSystemNameBuffer: Указатель на буфер возвращающий имя файловой системы(как например, FAT или NTFS).

nFileSystemNameSize: Параметр определяет длинну буфера имени файловой системы в символах.

Возвращаемые значения
Если успешно то не ноль.
Если функция терпит неудачу - ноль. Чтобы получить расширенную информацию об ошибке, вызовите функцию GetLastError.

Замечания:
Если попытаться получить информацию о дисководе или CD-ROM'е не имеющих вставленных носителей информации, то система отображет диалог, прося пользователя вставить дискету или компакт-диск.
Чтобы помешать системе, вызовите функцию SetErrorMode с флагом SEM_FAILCRITICALERRORS.
Флаг FS_VOL_IS_COMPRESSED является единственным индикатором сжатия тома.
Флаг FS_FILE_COMPRESSION указывает, поддерживает ли файловая система сжатие файлов.
Функция GetCompressedFileSize получает размер сжатого файла. Функция GetFileAttributes может определить чем сжат фай
Байт
 Аватар для Байт
13952 / 8783 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
18.11.2011, 23:22     Как реализовать регистрацию программы? #5
Цитата Сообщение от Dimoza Посмотреть сообщение
Не понял тебя...Ты это к чему, продолжи мысль...
По какому нибудь алгоритму формируешь из серийного другое число (ну, складываешь все цифры или берешь остаток по модулю 1234567(это действо 1). При регистрации юзер тебе сообщает это число. Ты с ним делаешь еще что-то подобное(действо 2) и юзеру сообщаешь. Он это число вводит и прога его записывает в файл Key.txt.
При запуске программа читает энто число из Key.txt, затем читаем серийный номер, делаешь из него действа 1 и 2 и сравниваешь с тем что прочел из Key.txt.
Совпало - пусть работает. Не совпало (или Key.txt отсутствует) - пусть страдает.
Уффф. Реализовать легче чем написать что...
ЗЫ. Действо 1 можно опустить, пусть говорит тебе просто свой серийный номер.
Dimoza
0 / 0 / 0
Регистрация: 16.05.2010
Сообщений: 17
18.11.2011, 23:22  [ТС]     Как реализовать регистрацию программы? #6
Я прдполагал, немного по другому:при запуске есть два поля username и code. От usernam'а генерится код и сравнивается с тем что введено в code. Вопрос какой алгоритм выбрать ?и как работать с текстбоксами и буттонами?
Байт
 Аватар для Байт
13952 / 8783 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
18.11.2011, 23:47     Как реализовать регистрацию программы? #7
Цитата Сообщение от Dimoza Посмотреть сообщение
Блин ребят, как это использовать в моем случае то?
C++
1
2
3
4
5
6
7
8
9
10
{ unsigned long sn; char b[20];
GetVolumeInformation("C:\\", NULL, 0, &sn, NULL, NULL, NULL, NULL);
// Помещаешь sn в Label1
// Юзер тебе звонит и сообщает это число
// Ты берешь от него остаток от деления на 111 и сообщаешь его юзеру
// Он вводит его в Edit1 и жмет батон "Регистрация"
FILE *f = fopen("Key", "w");
strcpy(b, Edit1->Text.c_str());
fprintf(f, "%s\n", b);
fclose(f);
Теперь при запуске программы
C++
1
2
3
4
5
6
7
8
9
{ unsigned long sn; int m;
GetVolumeInformation("C:\\", NULL, 0, &sn, NULL, NULL, NULL, NULL);
REG = 0;
FILE *f = fopen("Key", "r");
if (f!=NULL)  {
fscanf(f, "%d", &m)
if ((sn%111) == m) REG = 1;
fclose(f);
}
Добавлено через 4 минуты
Цитата Сообщение от Dimoza Посмотреть сообщение
Я прдполагал, немного по другому:при запуске есть два поля username и code. От usernam'а генерится код и сравнивается с тем что введено в code.
Юзер может спокойно переписать программу своему приятелю и сообщить ему свой usernam. Диск он вряд ли снимет со своего компа
как работать с текстбоксами и буттонами?

Не по теме:

Хозяюшка, дай водички напиться, а то так есть хочется, что даже ночевать негде

Dimoza
0 / 0 / 0
Регистрация: 16.05.2010
Сообщений: 17
19.11.2011, 00:41  [ТС]     Как реализовать регистрацию программы? #8
Помоему всеми любимая винда примерно такой алгоритм использует. Ответьте пожалуйсто на второй вопрос это же для новичков ветка, так что не считаю этот вопрос здесь лишним.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2011, 01:07     Как реализовать регистрацию программы?
Еще ссылки по теме:

C++ Указатель на имя файла как аргумент функции. Как реализовать?
C++ Необходимо реализовать шаблонный класс Array, и грамотно реализовать push_back
Хочу попробовать сделать свою регистрацию C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.11.2011, 01:07     Как реализовать регистрацию программы? #9
Dimoza, В С++ стандарте нету тестбоксов и кнопок. Так что вопрос здесь находится не должен.
Yandex
Объявления
19.11.2011, 01:07     Как реализовать регистрацию программы?
Ответ Создать тему
Опции темы

Текущее время: 10:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru