ironman14

Modifying/Replacing Shell32.DLL on NT 4.0

45 posts in this topic

Thx, jaclaz for the links. Interesting (to say the least) reading. What surprises me (and this is where I agree with you wholeheartedly) tha MS, having had the contract with the good folks at IBM to develop DOS didn't have the sense to have learned some things from the IBM Mainframe Operating Systems and Applications. Strangely, Apple (the MS offshoot) used the same IBM-nonsensicle method of rolling out / tracking Fixes.

Can you say backwards compatible reentrant modules?

It appears that MS' point of view was "work around our problem this way and BTW get more hardware". :crazy:

(Apologies for also chiming in O/T but that article knocked me on the floor.)

Side notes -

I believe you meant SHELL32.DLL->SHELL32.NT4 (since this is an NT4 problem).
And thx for the "wrapper" (I call it an "intercept" / "interface"). -Not yet tested!-

Edited by submix8c
0

Share this post


Link to post
Share on other sites

After seeing different responses, I was determined to find out what exactly caused the problem. Using dependency Walker, I found out that Shell32.dll was attached to libvlccore.dll. So, I opened up libvlccore.dll in HxD, and found Shell32.dll. I renamed this to shell32.VLC and the hexes changed automatically. I saved the file and launched VLC. I was greeted with a new error message:

"The application or DLL C:\Program Files\VideoLAN\vlc\libvlccore.dll is not a valid Windows NT image. Please check this against yor installation diskette."

And when I opened Dependency walker to check, it says Shell32.VLC, but shows the error icon next to the file name. Also, it still says that SHGetFolderPathW is not found. I probably did something wrong with the hex editor. Maybe I edited the wrong file? I did figure out also that libvlccore.dll was attached to libvlc.dll, but I am not sure what that means.

0

Share this post


Link to post
Share on other sites

> ...I saved the file and launched VLC.

So far, so good.

> And when I opened Dependency walker to check, it says Shell32.VLC, but shows the error icon next to the file name.

1) Confirm that you have SHFolder.dll in your system directory.

2) Make sure that you renamed Shell32vlc.dll to Shell32.VLC and put it in your app folder.

3) In the DW Options menu, Configure the Module Search Order so that "The application directory" is moved up to the top of the search order.

We may have a problem with API forwarding on NT (and also 9x).

What version of VLC are you working with? I need to study the exact files you are working with.

Edited by jumper
0

Share this post


Link to post
Share on other sites

I made sure I had done the following 3 steps. The icon still appears.

One note though. I know under NT 4.0, SHGetFolderPathW exists in Shfolder.dll (installed with IE6). However, VLC calls for it specifically in shell32.dll. I was thinking that if I used the hex editor again on libvlccore.dll, and instead of shell32.vlc, I could type shfolder.dll and that may work.

Here are the files I am working with:

Shell32.vlc

vlc.exe

libvlccore.dll

I am using VLC 0.9.8a.

0

Share this post


Link to post
Share on other sites

> instead of shell32.vlc, I could type shfolder.dll and that may work.

Good idea. :yes: But "shfolder.dll" is one character too long so make a local copy and name it shfolder.00 or shfoldr.dll

BTW, I think this version of VLC requires SSE. FineSSE might work if you only have a PII. (FineSSE should work on NT, but hasn't been tested yet.)

0

Share this post


Link to post
Share on other sites

@ Jumper:

In a past post, I had heard you suggest modifying the KnownDLL of SHELL32, which is a very good suggestion. The only problem is that most applications require the specific DLL they call for. I also thought that if I replaced ALL the KnownDlls of NT 4.0 with the 2000 versions, the 2000 versions would connect and be stable (reboot correctly). However, I am not allowed to modify KnownDLLS by default, as the system is constantly using them. I was considering the following:

- Rename the 2K Shell32 to Shell2k.dll

- Add it to the system folder.

- Rename the NT 4.0 Shell32 to Shell32.old

- Rename Shell2k.dll to Shell32.dll.

I would need NT permissions for this. In the User Manager, I gave myself access to take ownership of files and other directories, but that doesn't seem to be enough. How do I use NT permissions in NT 4.0?

0

Share this post


Link to post
Share on other sites

The sequence should be:

- have disaster recovery plan ready

- Rename the 2K Shell32 to Shell2k.dll

- Add it to the system folder.

- Edit KnownDLLs in registry to redirect: Shell32 -> Shell2k.dll (need to be admin to edit registry?)

- reboot

- If system reboots okay, Shell32.dll will no longer be in use and can be renamed

>How do I use NT permissions in NT 4.0?

I really don't know. I think you need to be logged in as an administrator.

0

Share this post


Link to post
Share on other sites

This is shell2k.dll in the system32 folder.

As you can see, this file was originally named shell32.dll.

I may post a couple times, but because I have multiple pictures.

0

Share this post


Link to post
Share on other sites

This image shows the shell2k.dll value in the KnownDlls section of the registry.

Edited by ironman14
0

Share this post


Link to post
Share on other sites

Looks good. If you've rebooted, then the original Shell32.dll should be unlocked. You can now replace it and restore the original KnownDlls setting, or leave things as they are. I suggest leaving things as they are.

0

Share this post


Link to post
Share on other sites

Replacing the individual DLL won't do. First, they need themselves other DLL, and second, you will hit some Windows protections.

Upgrading the entry points needs to reprogram or port the DLL. All of them. This is a huge task. If nobody has done it for Nt4, I suggest not to start: it's not worth it for you alone.

Do you have excellent reasons to use Nt4? For instance its DirectX is limited to something like v4, so expect all games, video and sound players like VLC to fail even if the DLL were upgraded. Its disk size is also limited, and so on, and presently you'll find very few users to help you. The Microsoft updates have disappeared. No more antivirus I believe. No decent navigator.

0

Share this post


Link to post
Share on other sites

This will be a large post.

@Jumper. I have had no issues with the VLC application with Shell32.dll, just the subcategory in LIBVLCCORE.DLL. Once I finally correctly got libvlccore.dll to notice the 2K Shell32.dll (shell2k.dll), I had realized that I had damaged multiple files while trying to get this to work. I was lucky that HxD saves backups of DLLs.

@pointertovoid I have very little knowledge about programming, except Visual Basic. However I do not particularly like that no one has tried with NT 4.0. I want to make it more usable, but I am not the right person to do it. I like NT because it is fast, stable, and is the base for all newer Windows. However, I don't have any huge reasons for using it today, in 2014. On the contrary, it's not that no one has ever tried with NT 4, it's just that they haven't succeded. No offense. DirectX 5 is the latest for NT 4, and there is no more modern antivirus for NT, except maybe ClamWin. I bet some 98/ME users are having the same issues. Opera 10.63 works on NT 4.0, and it works pretty well and also has HTML5 support.

@All.

Thank you for your assistance, however this seems to be more difficult than I had hoped. It just seems that certain applications should be easier to modify. For example, I have tried using Dependency Walker on later releases of Flash 9,

(NPSWF32.DLL) and found out the ONLY missing function in it was MonitorFromWindow in USER32.dll. I have tried replacing User32.dll with User2k.dll, but that just messed up NPSWF32.DLL more.

-I know I am talking about flash AGAIN, but this was a testing purpose only. VLC only needed that certain function too.

Since I have realized, with help from pointertovoid, that it is a total waste of time to completely modify the Windows API, it seems to me that the only thing I can do is try to find an appropriate compatibility tool, and try installing KernelEx with it. Even though I am likely not going to modify DLL files much anymore, I still want to use modern-ish apps on NT. Kernelex is designed to run NT-only apps on old Windows, and NT 4 is clearly an NT based operating system, so it should work well.

0

Share this post


Link to post
Share on other sites

This will be a large post.

@Jumper. I have had no issues with the VLC application with Shell32.dll, just the subcategory in LIBVLCCORE.DLL. Once I finally correctly got libvlccore.dll to notice the 2K Shell32.dll (shell2k.dll), I had realized that I had damaged multiple files while trying to get this to work. I was lucky that HxD saves backups of DLLs.

@pointertovoid I have very little knowledge about programming, except Visual Basic. However I do not particularly like that no one has tried with NT 4.0. I want to make it more usable, but I am not the right person to do it. I like NT because it is fast, stable, and is the base for all newer Windows. However, I don't have any huge reasons for using it today, in 2014. On the contrary, it's not that no one has ever tried with NT 4, it's just that they haven't succeded. No offense. DirectX 5 is the latest for NT 4, and there is no more modern antivirus for NT, except maybe ClamWin. I bet some 98/ME users are having the same issues. Opera 10.63 works on NT 4.0, and it works pretty well and also has HTML5 support.

@All.

Thank you for your assistance, however this seems to be more difficult than I had hoped. It just seems that certain applications should be easier to modify. For example, I have tried using Dependency Walker on later releases of Flash 9,

(NPSWF32.DLL) and found out the ONLY missing function in it was MonitorFromWindow in USER32.dll. I have tried replacing User32.dll with User2k.dll, but that just messed up NPSWF32.DLL more.

-I know I am talking about flash AGAIN, but this was a testing purpose only. VLC only needed that certain function too.

Since I have realized, with help from pointertovoid, that it is a total waste of time to completely modify the Windows API, it seems to me that the only thing I can do is try to find an appropriate compatibility tool, and try installing KernelEx with it. Even though I am likely not going to modify DLL files much anymore, I still want to use modern-ish apps on NT. Kernelex is designed to run NT-only apps on old Windows, and NT 4 is clearly an NT based operating system, so it should work well.

Did you find some trick to run modern apps on nt 4.0? I want to use this OS too :( I hope that BlackWingCat will do something in order to run Kernelex on NT 4.0 :)

Edited by junior600
0

Share this post


Link to post
Share on other sites

I'm working (slowly) on a general solution that will help for all 32-bit Windows versions.

1

Share this post


Link to post
Share on other sites

I am also planning to try to get some slightly newer apps on NT 4.0. Hope it works!

1

Share this post


Link to post
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.