Nadgil Опубликовано 2 августа, 2004 Жалоба Поделиться Опубликовано 2 августа, 2004 Привет всем! Возможно ли в Delphi написать такой код, чтобы после запуска на машине программа взяла определённый параметр из системы, то биш переменную и прописала её в будущей программе, после чего скомпилила бы её? По русски: например есть программа установки. при её запуске она например берет из системы серийный номер жесткого диска и прописвает его в программе, которую потом скомпилирует и установит. Для чего: чтобы программа работала только на данном компьютере. После чего программа удалит инсталятор - ну эо не проблема. Можно ли такое осуществить? Может кто уже ломал себе голову по этому поводу? Поделитесь рассуждениями. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Scooby Опубликовано 2 августа, 2004 Жалоба Поделиться Опубликовано 2 августа, 2004 Конечно это возможно. (правда насчёт компиляции не уверен, я бы использовал файл настроек). Подобные фишки, вроде имени компьютера, серийного номера той или иной его части прописаны в реестре. 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. Легче будет реализовать генерацию серийного номера и т. д. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
dmc Опубликовано 3 августа, 2004 Жалоба Поделиться Опубликовано 3 августа, 2004 которую потом скомпилирует и установит Такое реально провернуть с asm и паскалем, у них небольшие компиляторы, а для компилятора дельфи нужно таскать уйму всяких библиотек. Лучше написать программу, генератора key файла, заточенного под определенный компьютер. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mmap Опубликовано 3 августа, 2004 Жалоба Поделиться Опубликовано 3 августа, 2004 Во первых, почему ты решил, что инсталлятор не может быть скопирован куда-нибудь для повторного использования? Или программа будет шарить во всех местах? В-третьих если не хочешь использовать реестр, то можно дописывать в конец *.exe -шника программы. Но самый распространённый способ - тот, что предложил dmc. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Nadgil Опубликовано 4 августа, 2004 Автор Жалоба Поделиться Опубликовано 4 августа, 2004 На счёт того чтобы вытащить серийный номер диска из реестра это не проблема, даже код уже есть. На счёт того, что инсталятор можно скопировать - в принципе можно, но мало кто это делает, сначало заупускают, а потом уже куда-то его копируют. Добавлено : [mergetime]1091627611[/mergetime] а как можно дописать в конце экзешника? можно поподробнее? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
mmap Опубликовано 4 августа, 2004 Жалоба Поделиться Опубликовано 4 августа, 2004 Да так. Просто открываешь exe-шник для записи и чтения, переходишь в его конец и пишешь что угодно. На запуск его это влиять никак не будет. Для чтения - открываешь exe для чтения, прееходишь по смещению начальный_размер_exe от начала и читаешь... Начальный размер можно узнать после компиляции. При смене одного числа на другое того же типа (константы) размер скомпилированного exe-шника не меняется. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.