Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dimoza
0 / 0 / 0
Регистрация: 16.05.2010
Сообщений: 17
#1

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

18.11.2011, 22:40. Просмотров 736. Ответов 8
Метки нет (Все метки)

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

Как реализовать циклическую работу программы - C++
Есть программа которая анализирует изображение и результаты дописывает в файл. Как сделать так, чтобы программа каждые 10 секунд проводила...

Архитектура программы: как лучше реализовать иерархию классов? (игра "Тамагочи") - C++
Здравствуйте! Пишу игру тамагочи на с++ ооп. Есть класса Critter (основная). Походными классами од Critter являются Dog , Cat, Hamster. ...

Реализовать повтор программы по усмотрению пользователя - C++
сделать повтор программы по желанию пользователя #include <iostream> #include <stdio.h> #include <conio.h> #include <string.h> ...

Turbo C++ реализовать для программы многоплатформенность - C++
Всем доброго времени суток. У меня....наверное вам покажется довольно глупый вопрос, но тем не менее. Скажите пожалуйста, можно ли в винде,...

Доработка программы: реализовать возможность работы с шестнадцатеричными числами - C++
здравствуйте! прошу помощи в доработке программы. нужно что бы она могла работать с шестнадцатеричными числами а не только с десятичными...

Хочу попробовать сделать свою регистрацию - C++
Хочу сделать небольшую програмку, в ней будет регистрация, потом ввод логина пароля и когда в неё заходишь, будет просто какая нибудь...

8
Байт
Эксперт C
16565 / 10835 / 1650
Регистрация: 24.12.2010
Сообщений: 20,942
18.11.2011, 22:55 #2
Есть такая функция GetVolumeInformation
Ее 4-й параметр - адрес long, куда заносится серийный номер логического диска, который записывается на диск во время его форматирования
0
Dimoza
0 / 0 / 0
Регистрация: 16.05.2010
Сообщений: 17
18.11.2011, 23:04  [ТС] #3
Не понял тебя...Ты это к чему, продолжи мысль...
0
Delpix
delpix.ru
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 может определить чем сжат фай
0
Байт
Эксперт C
16565 / 10835 / 1650
Регистрация: 24.12.2010
Сообщений: 20,942
18.11.2011, 23:22 #5
Цитата Сообщение от Dimoza Посмотреть сообщение
Не понял тебя...Ты это к чему, продолжи мысль...
По какому нибудь алгоритму формируешь из серийного другое число (ну, складываешь все цифры или берешь остаток по модулю 1234567(это действо 1). При регистрации юзер тебе сообщает это число. Ты с ним делаешь еще что-то подобное(действо 2) и юзеру сообщаешь. Он это число вводит и прога его записывает в файл Key.txt.
При запуске программа читает энто число из Key.txt, затем читаем серийный номер, делаешь из него действа 1 и 2 и сравниваешь с тем что прочел из Key.txt.
Совпало - пусть работает. Не совпало (или Key.txt отсутствует) - пусть страдает.
Уффф. Реализовать легче чем написать что...
ЗЫ. Действо 1 можно опустить, пусть говорит тебе просто свой серийный номер.
1
Dimoza
0 / 0 / 0
Регистрация: 16.05.2010
Сообщений: 17
18.11.2011, 23:22  [ТС] #6
Я прдполагал, немного по другому:при запуске есть два поля username и code. От usernam'а генерится код и сравнивается с тем что введено в code. Вопрос какой алгоритм выбрать ?и как работать с текстбоксами и буттонами?
0
Байт
Эксперт C
16565 / 10835 / 1650
Регистрация: 24.12.2010
Сообщений: 20,942
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. Диск он вряд ли снимет со своего компа
как работать с текстбоксами и буттонами?

Не по теме:

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

0
Dimoza
0 / 0 / 0
Регистрация: 16.05.2010
Сообщений: 17
19.11.2011, 00:41  [ТС] #8
Помоему всеми любимая винда примерно такой алгоритм использует. Ответьте пожалуйсто на второй вопрос это же для новичков ветка, так что не считаю этот вопрос здесь лишним.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
19.11.2011, 01:07 #9
Dimoza, В С++ стандарте нету тестбоксов и кнопок. Так что вопрос здесь находится не должен.
0
19.11.2011, 01:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2011, 01:07
Привет! Вот еще темы с ответами:

Написать регистрацию игроков к игре крестики-нолики - C++
Здраствуйте!!! У меня возникла проблема при написании игры "Хрестики нулики" как мне в коде написать регистрацию игроков вот полное...

Программы из самоучителя C++ для чайников выводит ошибку. Как собрать эти же программы, только без ошибки? - C++
На этом форуме уже есть похожие темы, но корректирование этих программ исключив русские символы не дали существенного результата.

Указатель на имя файла как аргумент функции. Как реализовать? - C++
Доброго времени суток всем! Прошу помощи! Написал программу, есть пару моментов, сложных для меня. Необходимо написать две функции, одну...

незнаю как вывести полное решение для задачки.смысл улавливаю, а как реализовать - туплю - C++
Задана окружность, с помощью координат центра и радиуса. Определить, лежит ли она полностью в первой четверти. 1вывожу окружность и ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru