Help - Search - Members - Calendar
Full Version: KernelEx v0.3.6 released!
MSFN Forums > Microsoft Software Products - Discussion & Support > Windows 95/98/98SE/ME > Windows 9x Member Projects
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24

   
Google Internet Forums Unattended CD/DVD Guide
Xeno86
KernelEx v0.3.6



For those of you who are still hesitating but are willing to test:

KernelEx automatically creates backup of files it modifies and creates a special recovery script making potencial recovery as fast and painless as possible.
Please read README file carefully. Thanks.


Description:

What is KernelEx? KernelEx is a compatibility layer to allow running Windows XP-only applications on Windows 98 and Windows Millennium. KernelEx is an open source project and is not distributing any copyrighted files. This project neither requires nor includes files from newer OSes, like Windows 2000 or Windows XP.

The aim of the project is to implement functions (not present on Windows 98 / ME) to kernel32.dll and other system libraries so that recent Windows XP programs and games work on Windows 98 / ME.


Requirements:

* Windows 98 FE or Windows 98 SE or Windows ME
ANY LANGUAGE VERSION and kernel version
* Microsoft Layer for Unicode (MSLU) [Unicows.dll], version 1.1.3790.0


Latest changes:
KernelEx v0.3.6 by Xeno86/Tihiy
10/21/2008
* added custom MSIMG32 library
* rewritten non-working TryEnterCriticalSection implementation
* PeekMessageW, DispatchMessageW, IsDialogMessageW, TranslateAcceleratorW, CopyAcceleratorTableW, CreateAcceleratorTableW, CallMsgFilterW call their ANSI counterparts directly
* in unicode to codepage translations for file apis, "_" is now default character instead of "?"
* Fixed SetFilePointerEx to preserve LastError
* Fixed GetVersion apis ignoring Skip Modules list in some cases
* Fixed RegQueryValueExW bug that could lead to crash in kexulay
* Fixes and workarounds for various MSLU wndproc-related issues:
* Changed: CallWindowProcA, GetWindowLongA, RegisterClassW/Ex
* Patch to remove KERNEL32.DLL resource checking ("program is invalid format or appears corrupted")
* Implemented:
- LockFileEx
- GetCharWidthI
- LockWorkstation
- IsHungAppWindow
- RealGetWindowClassW
- MoveFileWithProgressA/W
- CommandLineToArgvW
- HeapSetInformation
* Stubs:
- RegOverridePredefKey
- ReplaceFileA/W
- CreateJobObjectA/W,TerminateJobObject,OpenJobObjectA/W,QueryInformationJobObject,SetInformationJobObject,AssignProcessToJobObject
- RegisterWaitForSingleObject/Ex,UnregisterWait/Ex
- RegDisablePredefinedCache,IsWellKnownSid,SecuritySecurityDescriptorDescriptorblahblah
- IsValidLanguageGroup
- more stubs in psapi.dll

DOWNLOAD:

http://x86.neostrada.pl/KernelEx/
PROBLEMCHYLD
I'm not 2 familiar wit your work, but what ever u doing keep doing it.
98se2me and KERNEL UPDATE PROJECT is all I need.
You guys r the best.
Tihiy
I think there are some apis you may consider to implement:
- RestoreLastError (just link it to SetLastError)
- GetFilePointerEx (not so hard)

I don't remember more easy to implement apis which can improve application compatibility.
Maybe implement some as stubs?

Another large group of functions is Unicode (....W) functions.
They can be emulated using Unicows (MSLU).

But if you'll link Unicode funcitons to Unicows functions, you'll break some applications which are not expecting Windows 9x to support Unicode.

There was KernelXP project during RP lifetime; it was wrappers around standard libraries (kernel32,user32,etc) which were using Unicows to provide Unicode functions. To use them, applications import table had to be patched to use wrapper libraries instead of standard ones. Also it provided GetVersion(Ex) emulation.
Are you interested in this?
LLXX
Summary of missing APIs which I've evaluated:

Kernel32.dll
VerifyVersionInfoW (required by MSO.DLL) possible - but then what would 98SE identify itself as?
VerSetConditionMask (required by MSO.DLL) possible - see above
SetFilePointerEx (required by OSE.DLL) possible
GetFileSizeEx (required by OSE.DLL) possible
CreateHardLinkW (required by OSE.DLL) NTFS only, no chance

User32.dll
GetLastInputInfo probably unlikely
AllowSetForegroundWindow no functionality to be implemented
SetLayeredWindowAttributes too much work required to implement transparent windows

Shell32.dll
SHGetFolderLocation available in Windows ME shell32.dll (5.0 or later version)

AdvApi32.dll - All the functions below will require extensive work and thus won't be implemented - would a replacement ADVAPI32.DLL from a newer Windows version work?
LsaClose
LsaStorePrivateData
LsaRetrievePrivateData
LsaNtStatusToWinError
LsaOpenPolicy
ConvertSidToStringSidW
DecryptFileW
EncryptFileW
ConvertStringSecurityDescriptorToSecurityDescriptorW
ConvertSidToStringSidA
CheckTokenMembership

...and once I get more free time I'll resume working on the Large Disk Driver (>137Gb). I'm currently quite busy with something else (not 98 related).
krick
Does unicode support need to be hacked in? I thought that was what Micosoft Layer for Unicode was for...

http://www.microsoft.com/globaldev/handson...u_announce.mspx
Marius '95
I don't know programming, only PHP, but I can give you some ideas.
Use some tricks for CreateHardLinkW. Create a copy of that file instead of a hard link, and use a resident utility to keep the copies sincronized. What do you say? Is it possible? woot.gif Let's hope that no program will create a hard link for a DVD image. whistling.gif
Xeno86
QUOTE (Marius '95)
Use some tricks for CreateHardLinkW. Create a copy of that file instead of a hard link, and use a resident utility to keep the copies sincronized. What do you say? Is it possible?

Create copy - possible
for keeping copies syncronized additional tool would have to be created

btw. For testing purposes i would need an app which uses this function.
hougtimo
How can this be released under the GPL????? It cant.
Xeno86
@Tihiy
- RestoreLastError (just link it to SetLastError) added
- GetFilePointerEx (not so hard) - couldn't find that - did you mean SetFilePointerEx?
QUOTE
I don't remember more easy to implement apis which can improve application compatibility.
Maybe implement some as stubs?
Which ones? (a list?)
QUOTE
Another large group of functions is Unicode (....W) functions.
They can be emulated using Unicows (MSLU).

But if you'll link Unicode funcitons to Unicows functions, you'll break some applications which are not expecting Windows 9x to support Unicode.
Do you mean apps which already don't work on Win 9x?
QUOTE
There was KernelXP project during RP lifetime; it was wrappers around standard libraries (kernel32,user32,etc) which were using Unicows to provide Unicode functions. To use them, applications import table had to be patched to use wrapper libraries instead of standard ones. Also it provided GetVersion(Ex) emulation.
Are you interested in this?
Wouldn't it be better to patch kernel32.dll so that is loads unicows.dll and runs this functions instead?
Tihiy
QUOTE
- GetFilePointerEx (not so hard) - couldn't find that - did you mean SetFilePointerEx?
Yea laugh.gif
QUOTE
Which ones? (a list?)

I'll make a list.
QUOTE
But if you'll link Unicode funcitons to Unicows functions, you'll break some applications which are not expecting Windows 9x to support Unicode.
Do you mean apps which already don't work on Win 9x?

No. RP4 included unicode support by default in user32.dll for example -> it raised a lot of problems (read RP4 thread) so i had to drop it realmad.gif
There can be problems on incorrect library load order; memory violation or deadloops if you'll directly link them to Unicows.
Better to: make a configuration file which contains something like:
[someapp.exe]
Unicode=1
Version=WinXP
and use such algorithm: open the file, check if Unicode enabled, then load unicows.dll and execute required otherwise pass to "donothing" wrapper; also version lying can be written (for apps checkit it) by rewriting GetVersion/Ex...
noguru
Thanks again xeno86.
With a uninstaller and a readme it's becoming less beta too. Cool!

More important, no more problems with SisoftSandra like before (tested 0.10b)


QUOTE (hougtimo @ Apr 3 2006, 01:14 PM) *
How can this be released under the GPL????? It cant.


May I ask why?
The patch imports functions into the original kernel32.dll. There is no modified kernel32.dll inside and certainly no "copy past" original code from Microsoft.
Or do you mean that the functions themselves are property of Microsoft?
(being the end-user I would screw up my rights on product support after applying this patch, but that is not relevant I think)
LLXX
QUOTE (noguru @ Apr 3 2006, 12:16 PM) *
Or do you mean that the functions themselves are property of Microsoft?
Microsoft isn't that dumb to trademark/copyright API names laugh.gif
Juan
Hi, I suggest you to take some code ideas from http://source.winehq.org/source/dlls/kernel/
yes.gif
Tihiy
QUOTE
I'll make a list.

Not soon, i have no internet at home now and no 9x at work no.gif

I think you can use such common algorithm:
Find program you want very much to run on 9x.
- Open program in Dependancy Walker (from 2k/XP/2k3 support tools or google).
- Check what functions are missing.
- Read MSDN & Wine sources to find how important they are.
- Implement them as stubs which return nothing (xor eax,eax/retn..) or something, also SetLastError (E_NOTIMPL) if you think they are important.
- 99% of required Unicode functionality is built in Unicows.

Usually it's very hard to run complex MS program written for XP (i think Office 2003 = impossible), but it may be possible to run programs that have 9x roots (Movie Maker 2?). It is impossible to make newer libraries like MFC42U.DLL to run.

But third party programs have more chances - they don't utitize much XP-specific functionality. I had Acrobat Reader 7 loading (displayed splash screen and hung), Google Earth working, MSN Messenger 7.5 working and small XP/Vista tools working.
You can achieve more. I can help you with GetVersion/Ex emulation library and frontend.
wizardofwindows
welcome.gif good work on kernel32 update and is it possible to get a short list of what does run with update?things like msn 7.5 and other apps what the status on them etc.
Xeno86
@timeless
Applications known to work after patching:
Doom 3
Quake 4
Need For Speed Most Wanted
and other which complained about missing GlobalMemoryStatusEx

As for regular applications:
MSN - I don't know - in Poland nobody uses it.
Other apps? status = unknown tongue.gif - please report about your successes and failures
Make a list of applications you'd like see running on Win 9x and which complain about missing exports and I'll see what can be done.

@Tihiy
Unfortunately I'm not familiar with your RP project because of this:
QUOTE
Do not forget this release is only for Windows 98 Second Edition,English!
GetVersion(Ex) - how many programs rely on this?


Now I will be trying to run FEAR on Win 9x:
GetFileSizeEx, SetFilePointerEx and shell32:SHGetFolderPath will have to be implemented.

Hopefully it will work smile.gif
PROBLEMCHYLD
I have all updates installed.Tryin 2 play Nestopia.
I get error GetModuleFileName().Maybe this can help u,help me.
And no this is not cause by your patch.

List of apps I would like is
Napster and Windows Movie Maker
Xeno86
QUOTE
I get error GetModuleFileName().Maybe this can help u,help me.
What does the error message say exactly?
It would be strange if it was GetModuleFileName because it exists in Windows 9x - are you sure that it wasn't GetModuleFileNameEx ?
PROBLEMCHYLD
GetModuleFileName()failed!
This all it says

Another would be Windows Movie Maker 1
Shell32.dll:SHgetFolderPathW.

Napster- Shell32.dll:SHgetFolderPathA
LLXX
QUOTE (PROBLEMCHYLD @ Apr 5 2006, 09:40 AM) *
And no this is not cause by your patch.
Then why you posted here?
PROBLEMCHYLD
QUOTE (LLXX @ Apr 5 2006, 09:41 PM) *
QUOTE (PROBLEMCHYLD @ Apr 5 2006, 09:40 AM) *
And no this is not cause by your patch.
Then why you posted here?


Xeno86- says
Make a list of applications you'd like see running on Win 9x and which complain about missing exports and I'll see what can be done.

Thats what i thought i was doin
I apologize if I said anything wrong.
clintcan
I find your kernel update project very interesting...

This might help you a bit.... I don't know if it would - I have very little knowledge of hooking up with windows dlls, and that knowledge is through visual basic.

from http://www.phrack.org/show.php?p=62&a=5

QUOTE
In Windows NT, kernel32.dll acts as a wrapper for ntdll.dll


Would it be possible to implement a kernel32.dll that would call ntdll.dll? Or is the win9x dll structure different from the NT dll structure? Just asking.

Also for the determining of windows version... why not make something like the wine project does? for a specific executable, you can assign a windows version to it. The settings get saved in the registry, like in the wine section, but in our case, we can name it kernelupdate.

You can apply a hook wherein when the specified program tries to call the version api, the hook returns the "false" version.
Tihiy
QUOTE
GetVersion(Ex) - how many programs rely on this?

Every program that has no missing dependencies and says "No, I want Windows XP!" is relying on this.
I'll modify your kernel patcher for that functionality, this or next version.
Xeno86
@PROBLEMCHYLD

Ok I probable didn't state clearly
The errors I'm interested in are
"The (...) file is linked to missing export (DLLName):(ExportName)."

I'm currently interested in DLLNames: 'KERNEL32.DLL' and 'SHELL32.DLL'


Sample error message:


As for Movie Maker - Shell32.dll:SHGetFolderPathA/W should be present in next version of the project.
patchworks
Good. Have you got any relationship with ReactOS ?

If not, please consider it.
It would be great if these two project will be related in some way... whistling.gif
PROBLEMCHYLD
!
clintcan
Hi, its me again...

Aparently, your kernel update project is progressing nicely. I tried installing flash8 (which uses the new windows installer version 2.0 for windows xp/2000), which only runs on windows xp/2000. Apparently before the patch, the installer won't even far... it would say that windows xp/2000 is needed, now, it tries to update the windows installer, but then outputs an error in the middle of installing windows installer:

The WINDOWSINSTALLER-KB884016-V2-X86.EXE file is linked to missing export NTDLL.DLL:NtOpenProcessToken.

Hope this helps you add this functionality into the kernel patch! Keep doing the good work guys!

By the way, ever since I used the patch, windows 98 seems a little more stable on apps that usually crash on me, like the new version of yahoo messenger.
lleoliveira
Hi all
I think this is a great project for Windows 98. I would like to know if is possible to add some functions in Windows 98 that only have in Windows XP.
Example: I want to run a program like TaskSwitchXP Pro 2.0 http://www.ntwind.com/taskswitchxp/ in Windows 98, but to do this, i think it's necessary to add many functions in many files.
Other thing that i want to see is transparency effect.
Please answer me.
as patchworks said, you could consider Reactos project.
Chozo4
QUOTE (clintcan @ Apr 6 2006, 09:20 AM) *
The WINDOWSINSTALLER-KB884016-V2-X86.EXE file is linked to missing export NTDLL.DLL:NtOpenProcessToken.



Sounds like it's missing that one export because you probably don't have the file 'ntdll.dll' on your system. Sounds like a LinkLibrary associated with NT systems. Could try fishing around the net for the file "NTDLL.DLL" and then putting it in your system directory.
Xeno86
QUOTE
Good. Have you got any relationship with ReactOS ?
nope I don't have any relation with ReactOS.
QUOTE
By the way, ever since I used the patch, windows 98 seems a little more stable on apps that usually crash on me,
Nice to hear that smile.gif
QUOTE
I want to run a program like TaskSwitchXP Pro 2.0 http://www.ntwind.com/taskswitchxp/ in Windows 98, but to do this, i think it's necessary to add many functions in many files.
Unfortunately this program relies on Win XP theme engine (uxtheme.dll) so I am afraid that it isn't possible to run it. But hey there's sourcecode for that - so you (or anybody else) can try to modify it so that it runs under Win 98.
QUOTE
Other thing that i want to see is transparency effect.
The goal of this project is to run programs which rely on 2000/XP only functions (mainly kernel32.dll) - if you want transparency - ask Tihiy. Btw. I haven't tried it but Kernel Update Project should work with Revolutions Pack without problems. But please backup kernel32.dll first!
QUOTE
Could try fishing around the net for the file "NTDLL.DLL" and then putting it in your system directory.
Don't do that - ntdll.dll from WinXP has different functionality and you'll have problems and might not be able to start your system if you use XP's version!
clintcan
QUOTE
Unfortunately this program relies on Win XP theme engine (uxtheme.dll) so I am afraid that it isn't possible to run it. But hey there's sourcecode for that - so you (or anybody else) can try to modify it so that it runs under Win 98.


I read through a link somewhere that it's possible to implement a theme engine. I forgot where that link was, but the guy used managed C code to do it... the theme api function downgrades gracefully in windows 9x/me systems instead of outputting an error code.

Do a google search on add functions in kernel.dll. That's how I found it through searching all the links.
Tihiy
QUOTE
I read through a link somewhere that it's possible to implement a theme engine. I forgot where that link was, but the guy used managed C code to do it... the theme api function downgrades gracefully in windows 9x/me systems instead of outputting an error code

http://www.codeproject.com/managedcpp/ManagedUxTheme.asp

But you can't read at all.
clintcan
Well, I apologize for the mistake Tithiy. Was trying to help out. smile.gif

I have to admit my windows skills are getting rusty though. blushing.gif
wizardofwindows
thumbup.gif excellent progess xeno
winxpi
What about SHGetFolderPathW ?
Tihiy
QUOTE (winxpi @ Apr 7 2006, 09:00 AM) *
What about SHGetFolderPathW ?

It is implemented in Me shell32.dll as real api.
Probably in shfolder.dll it is implemented really too! thumbup.gif
LLXX
SHGetFolderPathW can be indirected from shell32.dll to shfolder.dll where it exists using Forwarder RVA feature:
QUOTE
A Forwarder RVA exports a definition from some other image, making it appear as if it
were being exported by the current image. Thus the symbol is simultaneously imported
and exported.
For example, in KERNEL32.DLL in Windows NT, the export named HeapAlloc is
forwarded to the string NTDLL.RtlAllocateHeap. This allows applications to use the
Windows NT-specific module NTDLL.DLL without actually containing import
references to it. The application’s import table references only HeapAlloc in KERNEL32.DLL.
Therefore, the application is not specific to Windows NT and can run on any Win32
system.
Tihiy
Stop! Forwarder RVA is not supported correctly in 9x!
I've read about it somewhere in 2k code.
patchworks
QUOTE (Xeno86 @ Apr 6 2006, 07:53 PM) *
nope I don't have any relation with ReactOS.


Then consider it ! newwink.gif

Now just a personal consideration: this could be one of the steps for my 'open sourcing Windows 9x' idea ! cool.gif
Xeno86
QUOTE
SHGetFolderPathW can be indirected from shell32.dll to shfolder.dll where it exists
Well this is what I'm trying to achieve now (shell32.dll use shfolder.dll's SHGetFolderPath) but I've just encountered a problem - shfolder.dll checks shell32.dll for SHGetFolderPathA/W and if it exists there - it runs it - so we have deeeep recursion. wacko.gif
Any ideas?
LLXX
Then edit shfolder.dll to remove that check, obviously... found this after 5 minutes looking through shfolder.dll:
CODE
sub_0_71931796
arg_0           = dword ptr  8
arg_4           = dword ptr  0Ch
arg_8           = dword ptr  10h
arg_C           = dword ptr  14h
arg_10          = dword ptr  18h

    push    ebp
    mov     ebp, esp
    push    esi
    push    edi
    push    offset aShell32_dll; "shell32.dll"
    mov     edi, 80004001h  ; E_NOTIMPL
    call    ds:LoadLibraryA
    mov     esi, eax
    test    esi, esi
    jz      short loc_0_719317DB
    push    offset aShgetfolderpat; "SHGetFolderPathW"
    push    esi            ; hModule
    call    ds:GetProcAddress
    test    eax, eax
    jz      short loc_0_719317D4; <- force jmp so it appears SHGetFolderPathW does NOT exist in shell32.dll
    push    [ebp+arg_10]   ; otherwise it tries to call it
    push    [ebp+arg_C]
    push    [ebp+arg_8]
    push    [ebp+arg_4]
    push    [ebp+arg_0]
    call    eax
    mov     edi, eax
loc_0_719317D4:
    push    esi
    call    ds:FreeLibrary
loc_0_719317DB:
    mov     eax, edi
    pop     edi
    pop     esi
    pop     ebp
    retn    14h
Or you can short-circuit the entire routine so it always returns E_NOTIMPL.
wizardofwindows
thumbup.gif cant wait for next update..
lleoliveira
Hi,
When i try to install programs like Google Earth, i receive a message that require a new version of Windows (2000 or XP).
Will this problem be solved with KERNEL UPDATE PROJECT?
What are the news for next days?

QUOTE
I ran windows 98 till 2005
the most irritating thing was the GDI and user resources limited to 64K each.
(a 16bit limitation carried from windows 3.x)
some apps use a lot of these ressources (steam, amsn, firefox < 0.8 , or sometimes anything with a BIG amount of graphics) which leads to rendering glitches and the PC or apps becoming quite unusable.
I think it's actually the main reason I upgraded to NT 5.x
(and there's the unability to kill explorer.exe, and other small glitches, but it gives win9x its charm )

other than that you still get directX 9 or .NET framework under 98SE without a problem. though yes, some games and stuff wouldn't work. (for doom3 I hexedited the .exe for the GlobalMemoryStatusEx() thing).

this project is cool, but I won't go back to 98 if the GDI resource limit is not fixed.. which would be a daunting task if possible.


Is it possible to have GDI resource limit fixed?
eidenk
QUOTE (lleoliveira @ Apr 11 2006, 06:28 PM) *
QUOTE
I ran windows 98 till 2005
the most irritating thing was the GDI and user resources limited to 64K each.
(a 16bit limitation carried from windows 3.x)
some apps use a lot of these ressources (steam, amsn, firefox < 0.8 , or sometimes anything with a BIG amount of graphics) which leads to rendering glitches and the PC or apps becoming quite unusable.
I think it's actually the main reason I upgraded to NT 5.x
(and there's the unability to kill explorer.exe, and other small glitches, but it gives win9x its charm )

this project is cool, but I won't go back to 98 if the GDI resource limit is not fixed.. which would be a daunting task if possible.


Is it possible to have GDI resource limit fixed?


I have asked so many times already and always got told : Not possible.

My understanding is that it might be next to impossible for the 16 bit part of the resources but that's not where I would like to see an increase. I would like to see the 32 bit part of the resources to be allocated larger chunks of memory as there is no intrisical 64k limit to their size.

The apps he said above are all 32 bits and the 32 bit resources segments are several MB large already AFAIK but I'd love to have them larger.

I don't understand well what he says above in the quote about the unability to kill explorer in 98 as explorer can easily be killed with any task manager on 98/ME. The difference with NT OSes is that it does not autoreload automatically when it is killed so that if you kill explorer in 98 and you have not devised a way to relaunch it yourself, you are stuck and need to reboot.
Xeno86
Next release should be ready in 2-4 days

Version reporting will not be present in that release (but is planned for future smile.gif )

GDI resource limit - I'm begining to learn asm so it's hard to say if it is possible or not.

The truth about this limit is that those problematic applications are usually badly written and/or have leaks - using HBITMAPs for EVERY image (especially for those which are not displayed but only stored / coppied into the window) is IMHO a misunderstanding.
lleoliveira
I think will be interesting if a group of developers try to rewrite Windows 98 files, like Reactos www.reactos.org is doing with WinNT.
So we could have a Win98 with open source files, with more and new features, and mantain the architecture.
What people here think about it?
wizardofwindows
welcome.gif I think that basically speaking the core of 98se is now speedy and stable the only downside is that new apps dont run because designed for nt /xp only now if xeno update address this and we can play games or run msn messenger 7.5 etc then we would have a pretty happening os once again.i know most people upgrade to xp not because they want to but because they have to in order to use the lastest messenger app game which sucks if your pc is a older one that cant handle a xp installion so im praying xeno project solves this so alot of people can keep using 98se a while longer.and remember to list apps that work now but didnt before applying the update.thxz and 9x lives in all of us.even link21 lol
LLXX
QUOTE (lleoliveira @ Apr 13 2006, 10:45 AM) *
So we could have a Win98 with open source files, with more and new features, and mantain the architecture.
What people here think about it?
That's a good idea, but difficult...

I don't have the link but I remember seeing on another board where someone rewrote kernel32.dll functions for improved performance...
TbbW
it wuld be kinda kickass if this wuld end with an kernel that's compleatly gpl'ed in the end tongue.gif
i.e to replace all the copyrighted parts of it.
patchworks
QUOTE (lleoliveira @ Apr 13 2006, 04:45 PM) *
I think will be interesting if a group of developers try to rewrite Windows 98 files, like Reactos www.reactos.org is doing with WinNT.
So we could have a Win98 with open source files, with more and new features, and mantain the architecture.
What people here think about it?


Ehm... this is my open sourcing Windows 9x idea !

cool.gif
Google Internet Forums Unattended CD/DVD Guide
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.