информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 700 с лишним git-серверов пострадало... 
 От повторного пришествия Шаи-Хулуда... 
 Крупный сбой Azure и других сервисов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Как программе определить, под какой ОС она запущена? 18.04.02 23:21  Число просмотров: 1100
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> Нужно при запуске программы определить, в ДОСе онаили в
> Win32

делаешь файл PE формата (обычный виндовский exe, в MSVC например)

в виндах он начинает выполняться с EntryPoint прописанной в IMAGE_OPTIONAL_HEADER (грубо говоря WinMain)

в досе выполняется DOS stub
он обычно выдаёт "This progrma can not be run in DOS mode"
вместо этого можно вставить любую свою дос-прогу (смотри параметр линкера /stub)
<programming>
Как программе определить, под какой ОС она запущена? 18.04.02 22:45  
Автор: juic Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Здрасте!
Конкретизирую
Нужно при запуске программы определить, в ДОСе онаили в Win32
После этого должен вызываться или виндовсовский код, или досовский. Прога определяет конфигурацию компа -> работает с железом. Один код не пойдёт. Я подумал, что надо сделать досовскую консоль, определяющую ось и тупо запускающую один из 2х екзешников для разных осей (кто подскажет умнее - благодарен буду)
Приму с благодарностью любые советы или линки, книги(доступные в сети)
Горю!!!!!!!! До понедельника!!!!! HELP
Как программе определить, под какой ОС она запущена? 18.04.02 23:21  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> Нужно при запуске программы определить, в ДОСе онаили в
> Win32

делаешь файл PE формата (обычный виндовский exe, в MSVC например)

в виндах он начинает выполняться с EntryPoint прописанной в IMAGE_OPTIONAL_HEADER (грубо говоря WinMain)

в досе выполняется DOS stub
он обычно выдаёт "This progrma can not be run in DOS mode"
вместо этого можно вставить любую свою дос-прогу (смотри параметр линкера /stub)
[Win32] А дельфийский компилятор эту опцию понимает? 22.04.02 01:55  
Автор: juic Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Нужно при запуске программы определить, в ДОСе онаили
> в
> > Win32
>
> делаешь файл PE формата (обычный виндовский exe, в MSVC
> например)
>
> в виндах он начинает выполняться с EntryPoint прописанной в
> IMAGE_OPTIONAL_HEADER (грубо говоря WinMain)
>
> в досе выполняется DOS stub
> он обычно выдаёт "This progrma can not be run in DOS mode"
> вместо этого можно вставить любую свою дос-прогу (смотри
> параметр линкера /stub)

А то у меня и компиляция проходит, и в ехе строчка /stub:мой файл присутствует. А результата нетути. Может, для дельфи ещё какие опции надо?
BTW, а яркий представитель программ такого типа - scandisk.exe 19.04.02 13:07  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
про scandisk.exe я в курсе 19.04.02 13:39  
Автор: juic Статус: Незарегистрированный пользователь
<"чистая" ссылка>
а процессор в защищённом режиме - это достаточный признак того, что вынь прога под вынью? я так понимаю, если я дос-приложение запущу, не переводящее проц в протектед, и оно определит что проц в протектед - то винда, если нет - то дос...
Нет, не верно! 19.04.02 15:07  
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
> а процессор в защищённом режиме - это достаточный признак
> того, что вынь прога под вынью? я так понимаю, если я
> дос-приложение запущу, не переводящее проц в протектед, и
> оно определит что проц в протектед - то винда, если нет -
> то дос...

Проц в защищенный режим может перевести и EMM386.EXE
Ну а всё-таки 19.04.02 16:10  
Автор: juic Статус: Незарегистрированный пользователь
<"чистая" ссылка>
как ещё (кроме первого совета) можно определить из дос-приложения, что оно запущено в win32
Я попробовал в дельфи эту опцию (stub) найти, но помоему она там не поддерживается. Плиз, хелп!
Ну а всё-таки 19.04.02 17:59  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
INT 2F - Windows Enhanced Mode Installation Check

AX = 1600h
Return: AL = status
00h neither Windows 3.x enhanced mode nor Windows/386 2.x running
01h Windows/386 2.x running
80h XMS version 1 driver installed (neither Windows 3.x enhanced
mode nor Windows/386 2.x running) (obsolete--see note)
FFh Windows/386 2.x running
AL = anything else
AL = Windows major version number >= 3
AH = Windows minor version number
Notes: INT 2F/AH=16h comprises an API for non-Windows programs (DOS device
drivers, TSRs, and applications) to cooperate with multitasking
Windows/386 2.x and Windows 3.x and higher enhanced mode.
certain calls are also supported in the Microsoft 80286 DOS extender in
Windows standard mode
this function served as the installation check and AX=1610h served to
get the driver entry point for XMS version 1, which is now obsolete.
Use AX=4300h and AX=4310h instead
:))))))))) 19.04.02 18:54  
Автор: juic Статус: Незарегистрированный пользователь
<"чистая" ссылка>
I don't know what language you prefer to thank you, but i really do that! That is the point!!!
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach