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

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-шника не меняется.

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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