{ > Is there a way to detect if a system is running under Novell > Netware? There must be an interrupt to do that, but wich one? Yes there is. Although this is in assembly, I'm sure you can dig out what you need and convert it to Pascal or inline ASM. I've also included for the more common multitaskers. I always try to check for each at the beginning of a program so I can code to take advantage of the features of whatever system it's operating under, or at least prevent problems. } ;***************************************************************** ;* Check to see if we are running under a Novell Network * ;***************************************************************** .public chk_novell .proc chk_novell auto .push es,di ; Protect the registers well use xor ax,ax ; and clear them push ax push ax .pop es,di mov ax,07A00H ; Novel Netware installation check int 2FH ; Check it or al,al ; If installed, al = 0FFH ; ES:DI ptr -> far entry point for ; routines otherwise accessed through ; INT 21H jnz double_check ; Appears to be installed, see if there ; is a far address in ES:DI stc ; Set carry to indicate no network .pop es,di ; restore what we used ret ; and exit double_check: push di ; Check pop ax or ax,ax ; Is it empty jnz in_novell ; No has pointer so were in a network push es pop ax or ax,ax ; Is it empty jnz in_novell ; No has pointer stc ; No pointer to far address so no network ; Chance of a ptr to 0000:0000 are ; basically non-existant in_novell: .pop es,di ; Clean up after ourselves ret ; and go home .endp chk_novell ;*********************************************************************** ;* Check to see if we are running under Desqview, TopView, or TaskView * ;*********************************************************************** .public chk_desq .proc chk_desq auto .push ax,bx ; Save registers we will use mov ax,1022H ; This is the get version function ; that TopView installs for Int 15H. ; Most TopView compatibles use the ; same function so we can check for ; several with just one call xor dx,dx ; Clear dx int 15H ; Make the call cmp bx,0a01H ; DesqView 2.x returns 0A01H jnz try_task ; Did we get it mov @dataseg:Desqview,1 ; YES, save it and go home jmp short No_View try_task: ; No, Try TaskView cmp bx,0001H ; TaskView Returns 0001H jnz try_top ; Get it mov @dataseg:TaskView,1 ; Yes jmp short No_View try_top: ; No, try TopView. Top View returns it's or bx,bx ; version so just test for non-zero jz No_View ; is it non-zero mov @dataseg:TopView,1 ; Yes, save it No_View: .pop ax,bx ; Restore regs and go home ret .endp chk_desq { Hope this helps. BTW, I don't know about the later versions of Windows, but the older versions respected the Desqview installation check. }