Jump to content

Add functions to Windows 95 shell32.dll


Recommended Posts

From my perspective, the problem with Shell32.dll is just a variation of what has come to be known as “DLL Hell”.

See “The End of DLL Hell” by Rick Anderson.

http://msdn.microsoft.com/library/default..../dlldanger1.asp

One of the solutions to the problem, according to Mr. Anderson, is to use what he called “Private” or “side-by-side” DLL’s. In a nutshell this just means putting a copy the DLL that works into the same directory as the troublesome EXE.

See also

“Implementing Side-by-Side Component Sharing in Applications” by David D'Souza, BJ Whalen, and Peter Wilson.

http://msdn.microsoft.com/library/default..../sidebyside.asp

>as far as i know shell32.dll is one of the files who will only loaded from the %windir%\system because of a registry entry.

I think this would be the case with 16-bit DLL’s. It may also be the case with certain COM/OLE based DLL’s. However shell32.dll is, for the most part, just a standard Win32 DLL. With these types of DLL’s Windows just searches for and loads the required file as I described earlier.

>The easiest solution is to keep an Win98SE Shell32.dll in System directory renamed to e.g Shell98.dll.

>Use a hexeditor to replace entry Shell32.dll with Shell98.dll. worked perfectly for 5 years

While this is a valid solution, I would hesitate to call it the “easiest” solution. However I would agree that it is unclear at this time which is the best solution.

I have corrected problems with the Win98 version of Notepad.exe and a minor issue with Firefox (the Import function fails with the Win95 version of shell32.dll) by placing a copy of the Win98 version of shell32.dll in the same directory as the relevant exe’s. Hopefully others will post here and report their success and/or failure with other applications using one or both methods and we can find out what works best.

Link to comment
Share on other sites


@iWindoze I know the wayback machine. I visited Paul Chitescu`s hp last time 1999 ,remembered the link and posted without searching for it

as I don`t administrate Win3.1x machines anymore.

So I don`t care much about Win31.x /Win32s issues anymore.

( OS/2 came with a much superior Win16 support so I didn`t use Win3.1x myself ).

I admit I`m to lazy to search for something like before I post. :D

@PeteK27

>>as far as i know shell32.dll is one of the files who will only loaded from the %windir%\system because of a registry entry.

>I think this would be the case with 16-bit DLL’s. It may also be the case with certain COM/OLE based DLL’s. However shell32.dll is, for the most part, just a standard Win32 DLL. With these types of DLL’s Windows just searches for and loads the required file as I described earlier.

I changed for a long period of time inf-files of Win9x Setup to exclude somethings etc.simply make life easier for me.

HKLM stands for HKEY_LOCAL_MACHINE inside inf-files

in Msbase.inf inside Windows 98 precopy1.cab is a addreg section called

[msbase.reg]

; List of 32 bit DLLs known to be loaded always from SYSTEM dir

( KEY_KNOWNDLLS stands for

"SYSTEM\CurrentControlSet\Control\SessionManager\KnownDLLs" )

HKLM,%KEY_KNOWNDLLS%,DIGSIG,2,DIGSIG.DLL

HKLM,%KEY_KNOWNDLLS%,KERNEL32,,KERNEL32.DLL

HKLM,%KEY_KNOWNDLLS%,USER32,,USER32.DLL

HKLM,%KEY_KNOWNDLLS%,GDI32,,GDI32.DLL

HKLM,%KEY_KNOWNDLLS%,WOW32,,WOW32.DLL

HKLM,%KEY_KNOWNDLLS%,WINMM,,WINMM.DLL

HKLM,%KEY_KNOWNDLLS%,WINNT,,WINNT.DLL

HKLM,%KEY_KNOWNDLLS%,RPCRT4,,RPCRT4.DLL

HKLM,%KEY_KNOWNDLLS%,ADVAPI32,,ADVAPI32.DLL

HKLM,%KEY_KNOWNDLLS%,COMDLG32,,COMDLG32.DLL

HKLM,%KEY_KNOWNDLLS%,CRTDLL,,CRTDLL.DLL

HKLM,%KEY_KNOWNDLLS%,SHELL32,,SHELL32.DLL ; shell32 is mentioned.

HKLM,%KEY_KNOWNDLLS%,SHSCRAP,,SHSCRAP.DLL

HKLM,%KEY_KNOWNDLLS%,LZ32,,LZ32.DLL

HKLM,%KEY_KNOWNDLLS%,OLECLI32,,OLECLI32.DLL

HKLM,%KEY_KNOWNDLLS%,OLESVR32,,OLESVR32.DLL

HKLM,%KEY_KNOWNDLLS%,VERSION,,VERSION.DLL

HKLM,%KEY_KNOWNDLLS%,COMCTL32,,COMCTL32.DLL

HKLM,%KEY_KNOWNDLLS%,MSNP32,,MSNP32.DLL

HKLM,%KEY_KNOWNDLLS%,NWNP32,,NWNP32.DLL

HKLM,%KEY_KNOWNDLLS%,MPR,,MPR.DLL

HKLM,%KEY_KNOWNDLLS%,MPRSERV,,MPRSERV.DLL

HKLM,%KEY_KNOWNDLLS%,MSSHRUI,,MSSHRUI.DLL

HKLM,%KEY_KNOWNDLLS%,MSNET32,,MSNET32.DLL

HKLM,%KEY_KNOWNDLLS%,NWNET32,,NWNET32.DLL

HKLM,%KEY_KNOWNDLLS%,MSPWL32,,MSPWL32.DLL

HKLM,%KEY_KNOWNDLLS%,OLE32,,OLE32.DLL

HKLM,%KEY_KNOWNDLLS%,OLEAUT32,,OLEAUT32.DLL

HKLM,%KEY_KNOWNDLLS%,OLEDLG,,OLEDLG.DLL

HKLM,%KEY_KNOWNDLLS%,OLETHK32,,OLETHK32.DLL

HKLM,%KEY_KNOWNDLLS%,NETBIOS,,NETBIOS.DLL

HKLM,%KEY_KNOWNDLLS%,MSAB32,,MSAB32.DLL

HKLM,%KEY_KNOWNDLLS%,NWAB32,,NWAB32.DLL

HKLM,%KEY_KNOWNDLLS%,SVRAPI,,SVRAPI.DLL

HKLM,%KEY_KNOWNDLLS%,CHOOSUSR,,CHOOSUSR.DLL

HKLM,%KEY_KNOWNDLLS%,MSSHRUI,,MSSHRUI.DLL

HKLM,%KEY_KNOWNDLLS%,SYNCUI,,SYNCUI.DLL

HKLM,%KEY_KNOWNDLLS%,LINKINFO,,LINKINFO.DLL

HKLM,%KEY_KNOWNDLLS%,MSVCRT20,,MSVCRT20.DLL

HKLM,%KEY_KNOWNDLLS%,RICHED32,,RICHED32.DLL

HKLM,%KEY_KNOWNDLLS%,WINSPOOL,,WINSPOOL.DRV

HKLM,%KEY_KNOWNDLLS%,MFC30,,MFC30.DLL

HKLM,%KEY_KNOWNDLLS%,MFCUIA32,,MFCUIA32.DLL

HKLM,%KEY_KNOWNDLLS%,MFCANS32,,MFCANS32.DLL

HKLM,%KEY_KNOWNDLLS%,NTDLL,,NTDLL.DLL

HKLM,%KEY_KNOWNDLLS%,RASAPI32,,RASAPI32.DLL

HKLM,%KEY_KNOWNDLLS%,TAPI32,,TAPI32.DLL

HKLM,%KEY_KNOWNDLLS%,UMDM32,,UMDM32.DLL

; List of 16 bit DLLs known to be loaded always from SYSTEM dir

( %KEY_KNOWN16% stands for

SYSTEM\CurrentControlSet\Control\SessionManager\Known16DLLs )

HKLM,%KEY_KNOWN16%,TOOLHELP.DLL,,TOOLHELP.DLL

HKLM,%KEY_KNOWN16%,COMPOBJ.DLL,,COMPOBJ.DLL

HKLM,%KEY_KNOWN16%,STORAGE.DLL,,STORAGE.DLL

HKLM,%KEY_KNOWN16%,OLE2.DLL,,OLE2.DLL

HKLM,%KEY_KNOWN16%,OLE2DISP.DLL,,OLE2DISP.DLL

HKLM,%KEY_KNOWN16%,TYPELIB.DLL,,TYPELIB.DLL

HKLM,%KEY_KNOWN16%,WIN87EM.DLL,,WIN87EM.DLL

HKLM,%KEY_KNOWN16%,OLE2NLS.DLL,,OLE2NLS.DLL

HKLM,%KEY_KNOWN16%,COMMDLG.DLL,,COMMDLG.DLL

HKLM,%KEY_KNOWN16%,COMMCTRL.DLL,,COMMCTRL.DLL

HKLM,%KEY_KNOWN16%,LZEXPAND.DLL,,LZEXPAND.DLL

HKLM,%KEY_KNOWN16%,VER.DLL,,VER.DLL

HKLM,%KEY_KNOWN16%,OLESVR.DLL,,OLESVR.DLL

HKLM,%KEY_KNOWN16%,OLECLI.DLL,,OLECLI.DLL

HKLM,%KEY_KNOWN16%,UNIDRV.DLL,,UNIDRV.DLL

HKLM,%KEY_KNOWN16%,HPPCL.DRV,,HPPCL.DRV

HKLM,%KEY_KNOWN16%,FINSTALL.DLL,,FINSTALL.DLL

HKLM,%KEY_KNOWN16%,WINOA386.MOD,,WINOA386.MOD

HKLM,%KEY_KNOWN16%,VGAFULL.3GR,,VGAFULL.3GR

HKLM,%KEY_KNOWN16%,MMSYSTEM.DLL,,MMSYSTEM.DLL

HKLM,%KEY_KNOWN16%,DIBENG.DLL,,DIBENG.DLL

HKLM,%KEY_KNOWN16%,SHELL.DLL,,SHELL.DLL

HKLM,%KEY_KNOWN16%,MSVIDEO.DLL,,MSVIDEO.DLL

HKLM,%KEY_KNOWN16%,MCIAVI.DRV,,MCIAVI.DRV

Unless you delete the registry entries under

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\KnownDLLs (Known16DLLs)

Shell32.dll should be only loaded from system directory.

(these entries exist part to some extent still under Win2k)

loading shell32.dll from different locations can be a bad idea.

Everything crashs lot more often (I`ve tried that ).

sometimes when an exe extracts during runtime another exe

and runs that your solution is only one.

I hate this kind applications but one of them is a important progam in our firm

and our hardware was incompatible with M$-IE 4 /Win98 ,but my chief wanted that

program without buying new computer.

Sorry for that long post I want to give precise proof that

I know what I`m talking about.

Link to comment
Share on other sites

>Unless you delete the registry entries under

>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\KnownDLLs (Known16DLLs)

>Shell32.dll should be only loaded from system directory.

You are correct. On my heavily modified 98SE system this key has been removed so moving shell32.dll worked for me. However on a normal system this value would have to be removed from the registry for this solution to work. I should have taken the time to test my proposed solution on a stock system. My bad. :blushing:

For those that might be interested, there is additional information here:

http://support.microsoft.com/kb/q193067/

>loading shell32.dll from different locations can be a bad idea.

I’ll admit that this is a less than ideal solution. However I continue to believe that it could be a workable one.

>Everything crashs lot more often (I`ve tried that ).

In theory (at least according to MS propaganda) this should not happen. But I agree that it probably does. However I suspect that this problem varies considerably from program to program. Therefore I still would be interested in knowing what others have observed – good or bad.

>sometimes when an exe extracts during runtime another exe

>and runs that your solution is only one.

>I hate this kind applications but one of them is a important progam in our firm

>and our hardware was incompatible with M$-IE 4 /Win98 ,but my chief wanted that

>program without buying new computer.

I assume here you are referring to EXE’s that, as they are loading, launch other EXE’s in the background. I agree that these types of applications are very difficult to troubleshoot since it is not always obvious what EXE’s are being started. I believe this is part of the reason why I had problems with Word97. You are probably already aware of it, but I have found Dependency Walker works well in helping to figure out these types of situations.

http://www.dependencywalker.com

>Sorry for that long post I want to give precise proof that

>I know what I`m talking about.

I assure you I never doubted your skill. Anyone who knows how to use a hex editor to solve a problem is clearly past the “Windows for Dummies” stage. :D

Link to comment
Share on other sites

the problem is that this exe e.g blabla1.exe extracts during runtime another exe from itself called e.g blabla2.exe

starting only that extracted exe blabla2.exe does not work.

So Dependency Walker isn`t a solution as it shows only dllfiles that are directly

imported by an exe.

Dependency Walker even does not show dllfiles that are loaded on the fly by a program.

The only solution would be disassembling that both exe trying to get the points

which blabla1.exe calls inside blabla2.exe and combine both exes.

I think this something for something with some time and more experience than me

:D

>I assure you I never doubted your skill. Anyone who knows how to use a hex editor to solve a problem is clearly past the “Windows for Dummies” stage.

I only wanted to make sure everyone understands what I`m talking about.

(English isn`t my mother tongue so my posts might be misunderstanding)

Link to comment
Share on other sites

>So Dependency Walker isn`t a solution as it shows only dllfiles that are directly

>imported by an exe.

>Dependency Walker even does not show dllfiles that are loaded on the fly by a program.

It will if you “Profile” your application (which I admit is not real obvious when you first use the program).

Do the following:

1) Select File:Open and open your EXE as usual (or drag and drop from Explorer).

2) Select Profile:Start Profiling…

3) Enter any command line arguments in the “Program arguments:” box if relevant. Most of the time you will leave this blank. Don't worry too much about the other check boxes.

4) Select OK.

Dependency Walker will then attempt to run the EXE and show you all the DLLs that are called as the program loads. If the program calls another EXE it will open another window and begin profiling that EXE as well (You may have to minimize the current window to see the other EXE's). It even gives you a running list of functions as they are called.

You can also use it to profile control panel applets by opening rundll32.exe and entering the relevant control panel file name as a “program argument”. Amazingly it is even freeware.

It is not perfect because a few applications don’t really like to be profiled and will crash while loading. However many times it gets far enough to give you a good idea what the problem is. I use it a lot to figure out what DLL’s I might be missing if an application won’t work.

The only downside is it only works with 32 bit apps. Also if a 32 bit DLL thunks over to a 16 bit DLL or calls into a VXD (e.g. a driver) it won’t tell you.

There is a somewhat similar 16 bit equivalent called Scanbin. However it is not quite as flexible or polished as Dependency Walker.

http://members.aol.com/bellamyjc/en/scanbin.html

>the problem is that this exe e.g blabla1.exe extracts during runtime another exe from itself called e.g blabla2.exe

>starting only that extracted exe blabla2.exe does not work.

I'll admit I am not sure how Dependency Walker would react if a second EXE was actually embedded in the first EXE. I can't recall if I have ever run into this situation. However depending on what the problem is, it may get far enough to figure out what is going on.

Link to comment
Share on other sites

I admit I used Dependency Walker last time somewhere around 1998.

Maybe I oversaw that feature.:(

I was happy when everything work

time is money, so most time one must make compromises.

A big problem is that many programs are simply bought without asking our

department, so one can only react.

A lot of tasks are solved with Makros inside Word etc.

Because of this chaos I`m busy keeping everything working.

You can`t imagine how strange some programs are.

Some e.g a cash department programs loads .386 files (16 bit vxd I think).

Some programs work only under Dos because they use memory right after freeing it, something that does not work under Windows.

As long as everything works corporate finance department will refuse any increase

of our budget.

Fortunatly pcs used for normal office work were migrated to GNU/Linux & Staroffice due to license problems.

When I have spare time I look at this

>the problem is that this exe e.g blabla1.exe extracts during runtime another exe from itself called e.g blabla2.exe

>starting only that extracted exe blabla2.exe does not work.

with an up to date version of Dependency Walker.

Link to comment
Share on other sites

  • 4 months later...
If you want to add show desktop and quick launch bar function in 95 explorer, i have those program somewhere, called SETUPQL.EXE

You might be interested in installing the Active Desktop Update.

It gives you the whole Windows 98 style shell...

Installing Active Desktop Update on Windows 95

http://www.oldfiles.org.uk/lightspeed/Active_Desktop.html

Also, this page has lots of notes on the whole thing including

all the ways you should (and shouldn't) install it...

http://wymette.home.att.net/programs/IEDeskUp.txt

Link to comment
Share on other sites

If you want to add show desktop and quick launch bar function in 95 explorer, i have those program somewhere, called SETUPQL.EXE

You might be interested in installing the Active Desktop Update.

It gives you the whole Windows 98 style shell...

Installing Active Desktop Update on Windows 95

http://www.oldfiles.org.uk/lightspeed/Active_Desktop.html

Also, this page has lots of notes on the whole thing including

all the ways you should (and shouldn't) install it...

http://wymette.home.att.net/programs/IEDeskUp.txt

I have an even better way of installing the IE Active Desktop Update under Windows 95 listed at my Computer Tips for Windows page:

http://erpman1.tripod.com/comptips.html

(scroll down to near the bottom of the page; I've even included a tip of creating a [.BAT] batch file that will install the desktop update when IE 5.x is already installed)

Note that after installing the IE Desktop Update with IE 5.x setup you will NOT see the "Show File Attributes In Detail View" option in the Folder Options {View} tab dialog box. You must add the necessary registry entries to add the File Attributes setting after you install the IE Desktop Update.

Edited by erpdude8
Link to comment
Share on other sites

..what is sleekv2?

============

In a regular 98lite SLEEK and MICRO the win95 shell32.dll is used and the win98 shell32.dll is renamed to shell32.w98. Applications that *require* this windows98 version must be binary patched to access shell32.w98 instead of shell32.dll

... now in sleekv2, the win95 shell32.dll is named shell32.w95

explorer(95).exe is patched to access shell32.w95 instead of shell32.dll

shell32.dll in the system folder is now the win98 shell32.dll (ie the same as for chubby). Now some of the newer routines are available for third party applications.

Hi ssmokee

This 98Lite patch, only modify Explorer.exe from Windows 95 to work with Win98 shell32.dll.

Windows 98 shell32.dll continue as default. :angry::angry:

:hello::hello:

That's not true. 98Lite uses both the Windows 95 explorer.exe and Windows 95 shell32.dll. This is why the dreaded "linked to missing export SHELL32.DLL" problem is occuring.

Edited by RJARRRPCGP
Link to comment
Share on other sites

That's not true. 98Lite uses both the Windows 95 explorer.exe and Windows 95 shell32.dll. This is why the dreaded "linked to missing export SHELL32.DLL" problem is occuring.

RJARRRPCGP is right on. Programs like Win98 Wordpad and the Spider Solitaire game (from Plus!98 and the newer one listed here:

http://www.3feetunder.com/files/winme_spider_setup.exe

These programs are not compatible with Win95 shell32.dll and generate those "Linked to missing export SHELL32.DLL" error messages.

Link to comment
Share on other sites

  • 2 weeks later...

You can add quick launch bar in Windows 95 without install Internet Explorer and active desktop! download my zip file attach here, then extract to windows directory, running main executable (ql95.exe), if you having trouble try merge the registry file. or

Download original SetupQL.exe from http://almawardi.tripod.com/

QL95.zip

Edited by almawardi
update dead link
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...