eXeL@B —› Программирование —› Как программно определить версию exe-файла и версию компилятора на Delphi или С++ |
Посл.ответ | Сообщение |
|
Создано: 02 мая 2012 20:32 · Личное сообщение · #1 |
|
Создано: 02 мая 2012 20:35 · Личное сообщение · #2 |
|
Создано: 02 мая 2012 20:41 · Поправил: tihiy_grom · Личное сообщение · #3 |
|
Создано: 02 мая 2012 20:53 · Личное сообщение · #4 |
|
Создано: 02 мая 2012 21:01 · Личное сообщение · #5 С сигнатурами всё ясно,вернее ясно что дело это малоперспективное - учитывая из соседней темы новый файл userdb.txt к PEId с новыми сигнатурами. Половину имеющихся exe-шников у меня определяются как yoda's Protector v1.02 (.dll,.ocx) --> Ashkbiz Danehkar * Вместо VisualC++ надо полагать. Начнем с простого - с выдирания из ехе основной информации о версии и названии продукта. |
|
Создано: 02 мая 2012 21:04 · Личное сообщение · #6 |
|
Создано: 02 мая 2012 21:18 · Личное сообщение · #7 Svinovod пишет: Половину имеющихся exe-шников у меня определяются как yoda's Protector v1.02 (.dll,.ocx) --> Ashkbiz Danehkar * Ну так удали эту сигнатуру. Универсальных способов(кроме как сигнатурных) которые показывали бы компилятор, версию компилятора, систему на которой компилировали и т.д. не существует, т.к. этой информации в exe просто нету. Что касаемо версии файла, то версия лежит в ресурсах, написать простенький извлекатель версии в 5-10 строк кода, минутное дело, да и примеров как грязи. |
|
Создано: 02 мая 2012 21:27 · Личное сообщение · #8 |
|
Создано: 02 мая 2012 21:27 · Личное сообщение · #9 |
|
Создано: 02 мая 2012 21:30 · Поправил: Svinovod · Личное сообщение · #10 Vovan666 пишет: Универсальных способов(кроме как сигнатурных) которые показывали бы компилятор, версию компилятора, систему на которой компилировали и т.д. не существует, т.к. этой информации в exe просто нету. Для VisualC++ можно определить. Например по используемой версии vc_redist, ещё я опытным путем установил что проги на VisualC++ 2010 не работают по Win2K |
|
Создано: 03 мая 2012 13:31 · Поправил: gloomdemon · Личное сообщение · #11 Svinovod пишет: ещё я опытным путем установил что проги на VisualC++ 2010 не работают по Win2K http://stackoverflow.com/questions/2484511/can-i-use-visual-studio-2010s-c-compiler-with-visual-studio-2008s-c-runtim http://tedwvc.wordpress.com/2010/11/07/how-to-get-visual-c-2010-mfc-applications-to-run-on-windows-2000/ Ну и еще: To build your own copies of the C run-time library files http://msdn.microsoft.com/en-us/library/k9a8ehy3%28VS.100%29.aspx |
|
Создано: 03 мая 2012 15:44 · Личное сообщение · #12 |
|
Создано: 03 мая 2012 18:12 · Личное сообщение · #13 KViNTO пишет: У себя для программного определения версии exe-файла использовал GetFileVersionInfoSize, GetFileVersionInfo, VerQueryValue. Сделал через VerQueryValue: Code:
Сам модуль FileVersionInfo в аттаче. Нифига не работает,почему-то переменная buff всегда не определена 8b8d_03.05.2012_EXELAB.rU.tgz - FileVersionInfo.pas |
|
Создано: 03 мая 2012 18:15 · Личное сообщение · #14 |
|
Создано: 03 мая 2012 18:26 · Личное сообщение · #15 |
|
Создано: 03 мая 2012 20:16 · Личное сообщение · #16 |
|
Создано: 03 мая 2012 20:28 · Личное сообщение · #17 KViNTO я хочу эту реализовать http://www.delphimaster.ru/articles/versioninfo.html Она более функциональная,только автор статьи не написал как его замечательный модуль правильно вызывать из основного Unit-а.Я всё сделал,только эта строчка не работает: VerQueryValue(VIBuff,pchar('\StringFileInfo'+LanguageInfo+''+From), pointer(str), buffsize); Тут первые 2 параметра входные (буфер + адрес извлечения данных) и 2 параметра выходные (str не знаю зачем нужен, buffsize размер буфера - он должен быть больше 0) From это то что извлекается: CompanyName,FileVersion,ProductName и так далее |
|
Создано: 03 мая 2012 23:30 · Личное сообщение · #18 |
eXeL@B —› Программирование —› Как программно определить версию exe-файла и версию компилятора на Delphi или С++ |