Sunday, April 26, 2009

Shell 95 Update (SH95UPD) Project

This information bring here from:
http://sg.geocities.com/liuwoonyung/SH95UPD

***PUBLIC ANNOUNCEMENT***

- Ok, firstly, I appologize. As somewhere near September this year I will be taking one of the most important Examinations of my life(GCE 'O' Levels), I will have to halt the development of SH95UPD(Untill late 2009?). Although development is now halted, please continue to post suggestions here.

Thank you all SH95UPD users for your support.

Description:

This project implements functions not found in the windows 95 shell from windows 98, allowing the users of 98lite (sleek), ROM, ROM2 to be able to once again run programs that would only work with the Windows 98 shell and not with the windows 95 shell.

SH95UPD is based on the KernelEX project, and is basically a stripped down version of KernelEX 0.3.2a. Currently it only tampers with Shell32.dll, adding functions present from the IE4 shell update to it.

This project neither requires nor includes files from Windows 98, and does not distribute any copyrighted files.

It is designed so that KernelEX can be installed over it, with almost no loss of functionality.

NOTE: Installing this patch over a system without a Windows 95 shell should not have any effect.

NOTE 2: SH95UPD has NOT been tested on more than 1 computer.

Starting with the Release candidate v0.0.2B, the SH95Version function is no longer included. Hence Kernel32.dll is now unpatched.

If you are installing SH95UPD v0.0.6 over a system with an older version of SH95UPD, please uninstall the older version before proceeding.

Please note that you would still need to hex edit DESK.cpl and replace all occurances of SHELL32.dll with SHELL32.w98 (Or the name of your Win98 SHELL32.DLL). This problem seems to be a fault with 1 of the Win95 SHELL32.dll's internal functions, and is currently being addressed. However, this should be the *only* file you would ever need to hex edit again.

SH95UPD v0.0.6 will be the last build of SH95UPD to be based on KernelEx 0.32a, newer builds will be based on KernelEx 0.36. Also, SHELL32.DLL will be linked to shlwapi.dll in newer versions, hence you need to have shlwapi.dll in your /system directory before installing SH95UPD v0.0.7 and above.

***PLEASE READ THE README FILE CAREFULLY***

Credit goes to Xeno86 and (x).

Known issues:

-Programs linking to Ordinal194 expecting SHCreatePropSheetExtArrayEx would run RealShellExecuteExA instead (Microsoft had changed the ordinal numbers in shell32 4.7x)

Currently inplemented functions:

Shell32.dll:

ShGetFolderPathA
SHGetSpecialFolderPathA (Alias of Shell32 Ordinal 175)
SHGetSpecialFolderPathW (Alias of Shell32 Ordinal 175)
SHGetNewLinkInfo (Alias of Shell32 Ordinal 179)
SHExitWindowsEx (Now a full implementation)
SHGetPathFromIDListW (Alias of SHGetFileFromIDListA)
SHGetFileInfoW (Alias of SHGetFileInfoA)
DllCanUnloadNow
DllGetVersion (Now returns its version as 4.72.3612 instead of 4.0.1212)
SHGetDataFromIDListW (Alias SHGetDataFromIDListA)
DllInstall (Dummy function)
DllRegisterServer (Dummy function)
DllUnregisterServer (Dummy function)

Requirements:

- Windows 95*, Windows 98 Standard Edition, Windows 98 Second Edition or Windows Millienium
- Any locale and kernel version
- Windows 95 Shell (Any version, but must be pre-OSR2.5)

*The use of SH95UPD on Windows 95 is untested.

Due to the facts that:
1. I now have a lot of other responsibilities to fulfill
2. my skills at programming are not very good
3. I am not very knowledgeable about the inner workings of Windows
expect this project to slow down, have bugs, and/or even halt. I would distribute the source code soon after I clean it up.

- I only released this project, hoping that it will be useful to others.
- As this project is not very heavily tested on more than 1 system, there may be undiscovered bugs present.

Changelog:

SH95UPD v0.0.6 07/04/2009
SHGetSpecialFolderPathA/W are now an aliases of Shell32 Ordinal 175
ShGetNewLinkInfo is now an alias of Shell32 Ordinal 179
DllGetVersion now returns its version as 4.72.3612 instead of 4.0.1212, hence programs would not complain that SHELL32.DLL is too old(Or as version 4.0)
SH95UPD's main executable is now UPX'ed! Hence file size is cut down from ~90KB to ~36KB

SH95UPD v0.0.5 30/10/2008

-Added the folowing dummy functions:
DllInstall
DllRegisterServer
DllUnregisterServer
-Modified DllGetVersion to return its version as 4.0.1212 instead of 6.0.2800 as it seems to cause problems.

SH95UPD v0.0.4A 20/07/2008

-Removed SHFlushSFCache (Causes problems)

SH95UPD v0.0.4 13/07/2008

-Added the following functions:
DllCanUnloadNow
DllGetVersion
SHFlushSFCache (Dummy function)
SHGetDataFromIDListW (Alias SHGetDataFromIDListA)

SH95UPD v0.0.3 12/05/2008

-Added SHGetPathFromIDListW and SHGetFileInfoW
-Fully implemented SHExitWindowsEx

SH95UPD v0.0.2B 03/05/2008

-Removed the SH95Version function, hence no patchingg done to KERNEL32.DLL
-Optimized the code being patched into SHELL32.DLL, hence a smaller patch.

SH95UPD v0.0.2 20/04/2008

-Implemented more functions in SHELL32.DLL:
-SHGetNewLinkInfo (Only a dummy function)
-SHExitWindowsEx
-Some bugfixes and optimizations
-Changed compiler to GCC, resulting in smaller program and more relible.

SH95UPD v0.0.1A 27/04/2008

-Improved relibility while installing
-Now installable under Windows 95 (Untested, can someone verify this?)
-Added SH95Version to KERNEL32.DLL

SH95UPD v0.0.1A 26/04/2008

-Initial release.
-Implemented the following functions:

SHELL32.DLL:
SHGetSpecialFolderPathA
SHGetSpecialFolderPathW
SHGetFolderPathA

KERNEL32.DLL:
SH95Version

Download SH95UPD

Latest version is v0.0.6

Version 0.0.6: SH95UPDv006.zip

Source code for SH95UPD v0.0.6: SH95UPDv006_src.7z

*IMPORTANT: This is a rushed release of the source code as I am pressed for time. Please discuss any compilation problems, suggestions and bugs in SH95UPD's main thread @ MSFN here: http://www.msfn.org/board/index.php?showtopic=116260
The source code has been compressed with 7-zip to reduce file size.

These files have been scanned and deemed to be virus free by AVG 7.5(Free Edition)

Please do not hot-link to the files as the file's names will change with every release.

Note to users who create derivative works based on SH95UPD:
You need to release your source code to the public, as failing to do so would be a violation of KernelEx's GNU GPL licence.

Rejoice 98lite users!!! =)

Real DOS-Mode Patch for Windows Millennium

This is information taken from original author for mirror purpose, because geocities will close the server soon.
http://www.geocities.com/mfd4life_2000/

Real DOS-Mode Patch for Windows Millennium
By Reines [MFD]
Last Update: August 15, 2000

Real DOS-Mode Patch for Windows ME v1.3
Introduction:

Did you ever wonder why Windows ME, which is based on the Windows 9x kernel, can't access Real DOS-Mode? Did you think that Windows ME architecture doesn't allow it?

Well, it seems that Microsoft simply decided to hide this option in Windows ME, for some unknown reason...

This patch will modify "IO.SYS", "COMMAND.COM" and "REGENV32.EXE" in order to unhide the Real DOS-Mode on Windows ME systems, resulting in a similar boot process to the one available in Windows 9x. This will allow, for example, to reach DOS directly by pressing "Shift-F8" at boot-up, to use "CONFIG.SYS" and "AUTOEXEC.BAT" before Windows loads, and to set up a startup menu.

This patch was tested only with the final release of Win ME (build 4.90.3000). It might be compatible with other (future or previous) builds as well.
Version History:

* v1.3 - Allows patching of non-standard versions of IO.SYS and COMMAND.COM. This adds full compability with non-US editions of Windows ME and might also allow to patch other (future or previous) builds as well.

* v1.2 - Allows patching of non-standard versions of REGENV32.EXE (for instance, on non-US editions of Win ME).

* v1.1 - Initial public release.

* v1.0 - Internal release.

Important:

If you are using a NON-US version of Win ME you will probably not be able to use versions prior to v1.3 as the files that are patched seem to be country specific. We have updated our current release to reflect this. If you use the US version then you will not experience any differences between v1.1, v1.2 and v1.3.
Installation Notes:

In order to install this patch, follow the instructions below carefully.

Note that whenever the instructions that follow refer to "C:\WINDOWS", you should specify the correct directory in which Windows ME is installed.
Stage 1:

Before applying the patch, complete the following tasks:

1. Create a temp directory and copy into it:

* "C:\WINDOWS\COMMAND.COM"
* "C:\WINDOWS\COMMAND\EBD\IO.SYS"
* "C:\WINDOWS\SYSTEM\REGENV32.EXE"

2. Make sure that the three files are writable, by running from the temp directory:

* "ATTRIB -R -H -S *.*"

Stage 2:

When you complete the tasks above, execute from the temp directory you created the included patch:

* "WINMEDOS.COM"

Stage 3:

Once the patch completes successfully, perform the following tasks in order to complete the installation:

1. Copy the patched files to their destination, overwriting the original ones:

* "IO.SYS" to "C:\"
* "COMMAND.COM" to both "C:\WINDOWS\" and "C:\"
* "REGENV32.EXE" to "C:\WINDOWS\SYSTEM"

2. Edit "C:\CONFIG.SYS" and "C:\AUTOEXEC.BAT" changing them as described below:

* Add to "CONFIG.SYS" the line: "DEVICE=C:\WINDOWS\IFSHLP.SYS".
* Add to the bottom of "AUTOEXEC.BAT" the line: "C:\WINDOWS\WIN.COM".

That's it! Once these tasks are completed, DOS will be ready for use on the first reboot.
Additional Notes:

* In case you wish to create a startup menu that lets you choose between Windows and DOS at boot-up, it can be done by editing "CONFIG.SYS" and "AUTOEXEC.BAT". The syntax of the startup menu is identical to the syntax on Win 9x systems. Keep in mind that the option configured to launch Win ME has to include the appropriate lines that load "IFSHLP.SYS" and run "WIN.COM" (as shown above).

* Instead of editing your own files to create a startup menu, you can copy the "CONFIG.SYS" and "AUTOEXEC.BAT" included in this release to "C:\". These files provide a convenient configuration of a startup menu. If Windows ME isn't installed in its default path ("C:\WINDOWS") on your system, make sure to edit these files before using them so that the paths of "IFSHLP.SYS" (in "CONFIG.SYS") and of "WIN.COM" (in "AUTOEXEC.BAT) are specified correctly.

* The line stating "Starting Windows Emergency Boot..." that you will see at startup has no effect at all on Windows. It appears because the patch is using the IO.SYS provided with the Windows ME Emergency Boot Disk.