Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Delphi


Рекомендуемые сообщения

Привет всем!

Возможно ли в Delphi написать такой код, чтобы после запуска на машине программа взяла определённый параметр из системы, то биш переменную и прописала её в будущей программе, после чего скомпилила бы её?

По русски: например есть программа установки. при её запуске она например берет из системы серийный номер жесткого диска и прописвает его в программе, которую потом скомпилирует и установит.

Для чего: чтобы программа работала только на данном компьютере.

После чего программа удалит инсталятор - ну эо не проблема.

Можно ли такое осуществить? Может кто уже ломал себе голову по этому поводу? Поделитесь рассуждениями.

Ссылка на комментарий
Поделиться на другие сайты

Конечно это возможно. (правда насчёт компиляции не уверен, я бы использовал файл настроек). Подобные фишки, вроде имени компьютера, серийного номера той или иной его части прописаны в реестре. Delphi работает с реестром. Многие программы достают из реестра информацию. Например эти команды достают имя пользователя и имя компа из реестра.

<<

var R:Tregistry;

begin

R:=TRegistry.Create;

R.RootKey:=HKEY_LOCAL_MACHINE;

R.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion', False);

UserName.Caption:=r.readstring('RegisteredOwner');

Organization.Caption:=r.readstring('RegisteredOrganization');

r.Free;

end;

>>

Но для того, чтобы вытащить номер серийника, надо круто знать команды реестра и Delphi. Легче будет реализовать генерацию серийного номера и т. д.

Ссылка на комментарий
Поделиться на другие сайты

которую потом скомпилирует и установит

Такое реально провернуть с asm и паскалем, у них небольшие компиляторы, а для компилятора дельфи нужно таскать уйму всяких библиотек. Лучше написать программу, генератора key файла, заточенного под определенный компьютер.

Ссылка на комментарий
Поделиться на другие сайты

Во первых, почему ты решил, что инсталлятор не может быть скопирован куда-нибудь для повторного использования?

Или программа будет шарить во всех местах?

В-третьих если не хочешь использовать реестр, то можно дописывать в конец *.exe -шника программы.

Но самый распространённый способ - тот, что предложил dmc.

Ссылка на комментарий
Поделиться на другие сайты

На счёт того чтобы вытащить серийный номер диска из реестра это не проблема, даже код уже есть.

На счёт того, что инсталятор можно скопировать - в принципе можно, но мало кто это делает, сначало заупускают, а потом уже куда-то его копируют.

Добавлено : [mergetime]1091627611[/mergetime]

а как можно дописать в конце экзешника? можно поподробнее?

Ссылка на комментарий
Поделиться на другие сайты

Да так. Просто открываешь exe-шник для записи и чтения, переходишь в его конец и пишешь что угодно. На запуск его это влиять никак не будет.

Для чтения - открываешь exe для чтения, прееходишь по смещению начальный_размер_exe от начала и читаешь... Начальный размер можно узнать после компиляции. При смене одного числа на другое того же типа (константы) размер скомпилированного exe-шника не меняется.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...