· Начало · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Определение версии винды

Посл.отвђт Сообщенiе


Дата: Мар 15, 2004 04:59:02 · Поправил: Marazm

Собсно как определить версию винды без использования WinAPI. Просто в XP есть режим совместимости и WinAPI врет. Нашел на сайте такой код:
LsNT PROC
    	mov ax,ds
    	test al, 4
    	jz WinNT

    	xor eax, eax    
    	ret

WinNT:
    	mov eax, TRUE
    	ret
LsNT ENDP

В ринципе этого хватит, но для общего развития... Какие есть еще методы?


Дата: Мар 15, 2004 05:50:42 · Поправил: Quantum

mov ax,cs
test ah,ah
jnz Win9x
WinNT:
; . . .
Win9x:
; . . .
(C) by не помню...


Дата: Мар 15, 2004 10:03:42

Marazm
В WinNT сегмент данных в GDT, а Win9x соответственно в LDT, так что код

mov ax,ds
test al, 4

правильный.


Дата: Мар 15, 2004 15:25:23

Думаю еще можно так:
sldt cx
jecxz isWinNT


Дата: Мар 15, 2004 15:41:09

Quantum

Кажись видел у Billy B.:)), не знаю его ли (C)


Дата: Мар 15, 2004 19:06:14

Black_mirror
Смысл то тот же, LDT в WinNT не используется.


Дата: Мар 16, 2004 07:00:00

А как в таком случае определить с точность, если не дло билда, хотябы какая это ось. Не просто NT или нет, а скажем 98 это или ME??


Дата: Мар 17, 2004 08:04:40

Какие тут все высокоуровневые, а в буте смотрели может там есть
ЗЫ
Тут статья была "Нестандаотный загр"