Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
4 / 4 / 0
Регистрация: 23.08.2011
Сообщений: 26
1

Где хранить id программы?

26.10.2011, 08:15. Показов 2201. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте ув. форумчане! Помогите советом...
Программа (приложение из 1 файла .exe) скачивается с веб-сайта, в ней контент полностью зависит от id. Вообщем суть вопроса: "Где хранить ту самую переменную "id"?"

P.S.
1. Файл с настройкой не подходит (лишний груз).
2. Количество ID может переваливать за 1000, при этом ручная компиляция программ для каждого клиента это слишком трудоемко.
----
"Жду ответа как соловей лета"...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.10.2011, 08:15
Ответы с готовыми решениями:

Где хранить изображение BitMap
Привет! Мне нужно запоминать изображение, или часть изображения Канвы. Я знаю, что есть метод...

Где следует хранить переменные?
Дело в том, что я не программист - ни по профессии ни по жизни. Но программировать иногда кое что...

Простейшая защита программы: где хранить число срабатываний программы?
День добрый! Написал одну небольшую программу, которая может быть интересна специализированной...

Где хранить настройки программы
Собственно, вопрос в названии. Пишу программу, в которой много настроек, как зашифрованных, так и...

15
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
26.10.2011, 10:12 2
Может быть тебе лутше хранить в ресурсах?
0
 Аватар для Gremlin
518 / 306 / 58
Регистрация: 30.07.2008
Сообщений: 607
26.10.2011, 10:15 3
В реестре
0
4 / 4 / 0
Регистрация: 23.08.2011
Сообщений: 26
26.10.2011, 10:59  [ТС] 4
Может быть тебе лутше хранить в ресурсах?
Ты предлагаешь 1000 раз компилировать с разными ресурсами? оО)

В реестре
Только вот программа должна уже знать что записывать в реестр..
0
 Аватар для Gremlin
518 / 306 / 58
Регистрация: 30.07.2008
Сообщений: 607
26.10.2011, 11:08 5
логин - пасс клинета, и брать ид из интернета

Добавлено через 1 минуту
стихи получились ))
0
4 / 4 / 0
Регистрация: 23.08.2011
Сообщений: 26
26.10.2011, 11:13  [ТС] 6
Забыл уточнить, в программе нету авторизации, иначе не пришлось бы с собой "таскать" запись об id.
0
 Аватар для Gremlin
518 / 306 / 58
Регистрация: 30.07.2008
Сообщений: 607
26.10.2011, 11:31 7
ну тогда никак, (Как он (exe) должен узнать что-то если он этого незнает)
полюбому нужно чтоб прога откудато брала запись!
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
26.10.2011, 11:35 8
не легче сделать в программе генерилку id по каким либо признакам?
т.е. юзер 1-й раз запускает прогу она ему типа
- "Тя как завать?"
- "Василий"
- "Хорошо Вася, твой id = 100, я это запомню и запишу в реестр, ОК?"
- "Ну пиши, чо уж там"
Второй раз уже прога запустится, зная этот id и от Васи ничего не надо будет узнавать.
0
4 / 4 / 0
Регистрация: 23.08.2011
Сообщений: 26
26.10.2011, 17:39  [ТС] 9
не легче сделать в программе генерилку id по каким либо признакам?
т.е. юзер 1-й раз запускает прогу она ему типа
- "Тя как завать?"
- "Василий"
- "Хорошо Вася, твой id = 100, я это запомню и запишу в реестр, ОК?"
- "Ну пиши, чо уж там"
Второй раз уже прога запустится, зная этот id и от Васи ничего не надо будет узнавать.
Генерировать тоже нельзя т.к. один id должен быть у целой группы людей.
Как насчет запись в сводке файла/версия? У кого-нибудь есть полезная информация (как считывать, а так же как изменить)?
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
26.10.2011, 17:45 10
Цитата Сообщение от c0lumb Посмотреть сообщение
Генерировать тоже нельзя т.к. один id должен быть у целой группы людей.
ну на основе какого либо алгоритма можно не генерить каждый раз новый рандомный, а ограничиться сотней.
к примеру на вопрос заданный тысячам пользователей "Какой вы пользователь? 1. Чайник 2.Продвинутый 3. Спец" есть всего 3 варианта ответа. т.е. будет всего 3 id.
0
4 / 4 / 0
Регистрация: 23.08.2011
Сообщений: 26
26.10.2011, 19:06  [ТС] 11
oxotnik, идея конечно оригинальная, но не подходит..
Как насчет запись в сводке файла/версия? У кого-нибудь есть полезная информация (как считывать, а так же как изменить)?
Теоретически можно раскопировать экземпляр приложения и записать id в сводке программным путем. Кто-нибудь сталкивался с подобным? =/

Добавлено через 1 час 13 минут
Решено.
Если кому интересно:

Перезапись версии файла (код Delphi7)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
function ReplaceFileInformation(FileName: String; Section: WideString; wsValue: PWideChar): Boolean;
type
PLangAndCodePage = ^TLangAndCodePage;
TLangAndCodePage = packed record
wLanguage: Word;
wCodePage: Word;
end;
 
function MAKELANGID(sPrimaryLanguage : Word;
sSubLanguage : Word) : Word;
begin
result := (sSubLanguage shl 10) or
sPrimaryLanguage;
end;
 
var
Size, Unused: DWORD;
VerData: PByte;
Value: Pointer;
Len, VerLen, I: UINT;
Translate: PLangAndCodePage;
KeyName: WideString;
FileVersion: LPWSTR;
hUpdate: THandle;
begin
Result:= FALSE;
Size := GetFileVersionInfoSize(PChar(FileName), Unused);
if Size <> 0 then
begin
GetMem(VerData, Size);
try
if GetFileVersionInfo(PChar(FileName), 0, Size, VerData) then
begin
Value := nil;
Len := 0;
VerQueryValue(VerData, '\', Value, Len);
 
with PVSFixedFileInfo(Value)^ do
begin
dwFileVersionMS := MAKELONG(1, 1);
dwFileVersionLS := MAKELONG(1, 1);
end;
 
Value := nil;
Len := 0;
VerQueryValue(VerData, '\VarFileInfo\Translation', Value, Len);
 
Translate := PLangAndCodePage(Value);
for I := 0 to (Len div SizeOf(TLangAndCodePage)) - 1 do
begin
// Вместо FileVersion может быть любой другой параметр
KeyName := '\StringFileInfo\' + IntToHex(Translate^.wLanguage, 4) + IntToHex(Translate^.wCodePage, 4) + '\'+ Section;
 
Value := nil;
VerLen := 0;
if VerQueryValueW(VerData, PWideChar(KeyName), Value, VerLen) then
begin
FileVersion := PWideChar(Value);
ZeroMemory(FileVersion, VerLen * SizeOf(WideChar));
// Ниже меняем данные
wsprintfW(FileVersion, wsValue); // Вот тут меняем версию
end;
 
Inc(Translate);
end;
 
hUpdate := BeginUpdateResource(PChar(FileName), FALSE);
if hUpdate <> 0 then
begin
Result := UpdateResource(hUpdate,
RT_VERSION,
MAKEINTRESOURCE(VS_VERSION_INFO),
MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
VerData,
Size);
EndUpdateResource(hUpdate, not Result);
end;
end;
finally
FreeMem(VerData);
end;
end;
end;
Пример использования:
Delphi
1
2
ReplaceFileInformation('D:\Work\Want2Vote\Free_Launcher\ver1\Project1.exe',
                              'FileVersion','123');
Чтение версии файла в программе (код bcb):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
String Version()
{
DWORD h;
String Version;
DWORD Size=GetFileVersionInfoSize(Application->ExeName.c_str(), &h);
char *buf;
buf=(char *)GlobalAlloc(GMEM_FIXED, Size); 
if (GetFileVersionInfo(Application->ExeName.c_str(),h,Size,buf)!=0) 
  {
    char *ValueBuf;
 
    UINT Len; 
    VerQueryValue(buf, "\\VarFileInfo\\Translation", &(void *)ValueBuf,&Len); 
    if (Len>=4) 
      { 
        AnsiString CharSet=IntToHex((int )MAKELONG(*(int *)(ValueBuf+2),*(int *)ValueBuf), 8);
 
        if (VerQueryValue(buf,AnsiString("\\StringFileInfo\"+CharSet+"\\FileVersion").c_str(),&(void         *)ValueBuf,&Len)!=0)
           Version = ValueBuf;
      }
  }
 
  GlobalFree(buf);
  return Version;
}
0
 Аватар для cpp_developer
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 3
26.10.2011, 19:47 12
дык, здесь, я так понимаю, нужен патчер, сама программа себя не перезапишет, или где ?
0
4 / 4 / 0
Регистрация: 23.08.2011
Сообщений: 26
26.10.2011, 21:42  [ТС] 13
В моей задаче нету в этом необходимости.
0
 Аватар для cpp_developer
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 3
26.10.2011, 22:02 14
тогда смысл всего этого, или вы чего-нибудь да не договариваете
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
27.10.2011, 05:09 15
Цитата Сообщение от c0lumb Посмотреть сообщение
иначе не пришлось бы с собой "таскать" запись об id.
Так ты и так её хочешь таскать.
1
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
27.10.2011, 23:28 16
Немного непонятно, что именно необходимо реализовать. В случае с версией, нужно либо иметь 2 приложения (патчер + ехе), либо программа должна действовать по следующему алгоритму
  • извлечь из своих ресурсов приложение (патчер)
  • запустить патчер
  • закрыть основное приложение
  • обновить патчером версию основной программы
  • запустить основную программу
  • удалить патчер
Как-то накручено для одного единственного ID. Все зависит от точной задачи. Из первого сообщения -имхо самый простой способ дать пользователю возможность вводить свой ID самому.
0
27.10.2011, 23:28
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2011, 23:28
Помогаю со студенческими работами здесь

Где хранить пароль от программы?
Всем привет. Есть fxml форма с логином и паролем. Как можно сделать, чтобы при первом запуске...

Где хранить объекты во время выполнения программы?
Вопрос довольно странный наверное для тех кто в Java давно. Поиск дает только предложения типа...

Как и где лучше хранить информацию программы
я хочу сохранить какую-то информацию ,которую ввожу в программу например почтовый ящик, в каком...

Где хранить настройки программы (свойства формы и её компонентов)
Уважаемые, мне необходимо где-то хранить настройки программы (например, если пользователь не хочет...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru