Jump to content

Welcome to MSFN Forum
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. This message will be removed once you have signed in.
Login to Account Create an Account


Photo

Modifying/Replacing Shell32.DLL on NT 4.0

- - - - -

  • Please log in to reply
43 replies to this topic

#26
pointertovoid

pointertovoid

    Advanced Member

  • Member
  • PipPipPip
  • 466 posts
  • Joined 16-January 09
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.


How to remove advertisement from MSFN

#27
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag
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.

#28
junior600

junior600

    Newbie

  • Member
  • 38 posts
  • Joined 26-April 13
  • OS:Windows 7 x64
  • Country: Country Flag

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, 08 April 2014 - 07:36 AM.


#29
jumper

jumper

    2014 All-American Masters HJ'er

  • Member
  • PipPipPip
  • 477 posts
  • Joined 21-January 11
  • OS:98SE
  • Country: Country Flag
I'm working (slowly) on a general solution that will help for all 32-bit Windows versions.
  • ironman14 likes this
Design feedback requested:
IHAtool - IpHlpApi tester; call various functions and report results
--status-> framework is solid; 22 api's fully supported; preview release coming soon
ComDlg32 wrapper - ComDlgEx meets IpHlpApi wrapper
--status-> PrintDlgExW working in latest SumatraPDF 8^)
Future projects: ImportPatcher40 - dialog interface; Kexter - IP40+Ktree+Kexstubs

#30
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag
I am also planning to try to get some slightly newer apps on NT 4.0. Hope it works!
  • Tommy likes this

#31
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag

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

As for how this "modern apps" thing for NT 4.0 has been going, I have a few things to say:

@ jumper

-I recently read that if you hex edited anything major, the file size will change and the DLL will be unusable, so:
-I downloaded your shell32.vlc patch and renamed your file to shell31.dll (Hope you don't mind).
-I replaced references from shell32.dll to shell31.dll.
-I opened vlc.exe in dependency walker, and all APIs were there!

But,
when I opened VLC,
it just loaded for a few seconds (the mouse icon said it was busy), then did nothing.
I thank you very much for this patch, Jumper, but do you know how to fix the launching error?

I also tried recent versions of Opera. Since version 11, the installer has shown "the procedure entry point GetUserDefaultUILanguage could not be located in the dynamic link library KERNEL32.dll"
So, I extracted the exe, and ran the opera executable , and it said it wasn't a valid windows NT app, despite it working perfectly on Win2000.

This is for all opera versions since 11.00 (late 2010) to 12.17 (2 days ago). Opera 11.00-12.02 has basically NO API changes from Opera 10.63. 12.10+ need PSAPI.dll, which can be copied from the NT 4 CD. I found this out by scanning all the opera.exe files in Dependency Walker.

Edited by ironman14, 26 April 2014 - 08:30 PM.


#32
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag
I also found out a way to integrate newer API's into Windows NT 4.0. I started by:
1. Opening a particular EXE in Dependency Walker.
2. Find the DLLS that are called by the particular app/sub DLL connected to app.

I did this with Firefox 3.6 (no update). The DLLs with missing functions in Firefox.exe were actually only in the sub-dll xul.dll, which called for missing APIs in User32.dll,kernel32.dll and Gdi32.dll.
So, I placed a copy of the Windows 2000 SP4 DLLs of each of those, and renamed them to user33.dll, kernel33.dll and gdi33.dll, in order to not meddle with hex editors. I put those in Windows NT 4.0, in the system32 directory. I also saw that the windows 2000 "kernel33.dll" needed nonexistent functions in Ntdll.dll, so I copied that from windows 2000, to my host pc, and renamed it 'otdll.dll" As we'll, user33.dll called for missing functions in kernel33.dll and gdi33.dll. And, gdi33.dll called for missing APIs in kernel33.dll and user33.dll. So, I went back to my host PC, and hex edited user33.dll to say kernel33 instead of kernel32 and to say gdi33 instead of gdi32. I did something similar with gdi33, only I said user33 instead of gdi33. And, in kernel33.dll I redirected Ntdll.dll to otdll.dll.

Finally, after all the editing, Firefox stopped giving procedure entry point not found errors.

But, the result wasn't much better. The exact error message was: The application failed to initialize properly. (0xc0000033). Click on ok to terminate the application.

As well, I tried Flash 10.0.12.36, which was similar except had no issues with gdi32. I didn't have to hex edit the w2k DLLs again, but still had to hex edit npswf32.dll to tell it which dll to use. The flash checker says I have version 10.0.12, which is correct, but whenever I go on a flash site, like Youtube or Dailymotion, the video refuses to play, by simply showing a black screen with no sound. On youtube, Opera shows the "playing" icon on the top of the window, but it doesn't play any video. When I right-click on a video/black screen, it doesn't even show the "About Flash Player 10" option, or the "Settings", so disabling hardware acceleration is not an option.

It wasn't even that hard to integrate Win2K APIs into NT 4.0. I was just clueless about it before. Now, the only challenge we have is getting apps to run.

#33
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag

I also found out a way to integrate newer API's into Windows NT 4.0. I started by:
1. Opening a particular EXE in Dependency Walker.
2. Find the DLLS that are called by the particular app/sub DLL connected to app.
I did this with Firefox 3.6 (no update). The DLLs with missing functions in Firefox.exe were actually only in the sub-dll xul.dll, which called for missing APIs in User32.dll,kernel32.dll and Gdi32.dll.
So, I placed a copy of the Windows 2000 SP4 DLLs of each of those, and renamed them to user33.dll, kernel33.dll and gdi33.dll, in order to not meddle with hex editors. I put those in Windows NT 4.0, in the system32 directory. I also saw that the windows 2000 "kernel33.dll" needed nonexistent functions in Ntdll.dll, so I copied that from windows 2000, to my host pc, and renamed it 'otdll.dll" As we'll, user33.dll called for missing functions in kernel33.dll and gdi33.dll. And, gdi33.dll called for missing APIs in kernel33.dll and user33.dll. So, I went back to my host PC, and hex edited user33.dll to say kernel33 instead of kernel32 and to say gdi33 instead of gdi32. I did something similar with gdi33, only I said user33 instead of gdi33. And, in kernel33.dll I redirected Ntdll.dll to otdll.dll.
Finally, after all the editing, Firefox stopped giving procedure entry point not found errors.
But, the result wasn'tO much better. The exact error message was: The application failed to initialize properly. (0xc0000033). Click on ok to terminate the application.
As well, I tried Flash 10.0.12.36, which was similar except had no issues with gdi32. I didn't have to hex edit the w2k DLLs again, but still had to hex edit npswf32.dll to tell it which dll to use. The flash checker says I have version 10.0.12, which is correct, but whenever I go on a flash site, like Youtube or Dailymotion, the video refuses to play, by simply showing a black screen with no sound. On youtube, Opera shows the "playing" icon on the top of the window, but it doesn't play any video. When I right-click on a video/black screen, it doesn't even show the "About Flash Player 10" option, or the "Settings", so disabling hardware acceleration is not an option.
It wasn't even that hard to integrate Win2K APIs into NT 4.0. I was just clueless about it before. Now, the only challenge we have is getting apps to run.

In response to this topic before, I tried OpenOffice 3.0, which claimed also to be "Not a valid Windows NT application." So, I opened up the EXE in Dependency Walker, and found out that MSVCR90.dll was missing. I then added it into the app folder , and found out that it had 2 missing functions in Kernel32.dll, so in HxD, I replaced it with Kernel33.dll. No API functions missing. But, the error "<folder path> is not a valid Windows NT application> persisted.

Then, I tried Chrome 23 <not sure why I chose that version>, which clearly has missing API functions. I could not install it, I extracted it from the ZIP. So, I grabbed Blackwingcat's Chrometool for windows 2000, and renamed all the xp dlls ending in XP (blackwingcat's versions) into 30.
Example- ws2_xp.dll - ws2_30.dll.
I connected all the XP DLLs together, and there were a few other things to fix. First of all, Chrome calls for SHGetKnownFolderPath in Shell32.dll (a function only present in Vista+ Shell32.dll, yet chrome works on XP. To fix this, in HxD, I overwrote SHGetKnownFolderPath with SHGetFolderPathW since they have similar functions. I overwrote the additional characters with NULs, not deleted them, which was the whole reason behind my previous VLC failure. It worked well.

The only other problem was that USERENV.dll needed another function, GetProfileType, which is only available in Windows 2000+. So, I looked in Dependency walker to see which DLLs linked to USERENV.dll, and replaced those functions with the "renamed" Windows 2000 functions in W2K Userenv.dll.

Still, same issue. Blackwingcat has made a tool called Fcwin2k.exe for Windows 2000, which can resolve "not a valid win32 application" messages. But, I have tried all versions of it on Windows NT 4.0, yet they crash. So, it is simply a compatibility problem with some of these programs, like Chrome, Openoffice and Opera. However, other programs have their own problems, like Firefox and Flash. I would bet that Thunderbird would have the same problem as FF, since they are compiled very similarly. If anybody knows of any fixes for Flash or FF, please let me know. Also, I may ask Blackwingcat if he can create an Fcwin-style tool for NT 4.0 (compatibility only).

Thanks everyone for your replies.

PS: The reason why I care so much about newer Flash is that about 70% of Flash content today needs version 10+, including some that needs Flash 11+.

UPDATE 1: I tried redownloading Firefox 3.6, and appropriately hex editing the functions, and the error message went away. But, Firefox did the same thing as VLC (displayed loading cursor, then nothing). FF 7 did the same. I tried Firefox 3.6.28 and 4, but they oddly wouldn't allow hex editing of all the needed functions.

Edited by ironman14, 06 May 2014 - 08:03 PM.

  • Tommy likes this

#34
junior600

junior600

    Newbie

  • Member
  • 38 posts
  • Joined 26-April 13
  • OS:Windows 7 x64
  • Country: Country Flag

 

I also found out a way to integrate newer API's into Windows NT 4.0. I started by:
1. Opening a particular EXE in Dependency Walker.
2. Find the DLLS that are called by the particular app/sub DLL connected to app.
I did this with Firefox 3.6 (no update). The DLLs with missing functions in Firefox.exe were actually only in the sub-dll xul.dll, which called for missing APIs in User32.dll,kernel32.dll and Gdi32.dll.
So, I placed a copy of the Windows 2000 SP4 DLLs of each of those, and renamed them to user33.dll, kernel33.dll and gdi33.dll, in order to not meddle with hex editors. I put those in Windows NT 4.0, in the system32 directory. I also saw that the windows 2000 "kernel33.dll" needed nonexistent functions in Ntdll.dll, so I copied that from windows 2000, to my host pc, and renamed it 'otdll.dll" As we'll, user33.dll called for missing functions in kernel33.dll and gdi33.dll. And, gdi33.dll called for missing APIs in kernel33.dll and user33.dll. So, I went back to my host PC, and hex edited user33.dll to say kernel33 instead of kernel32 and to say gdi33 instead of gdi32. I did something similar with gdi33, only I said user33 instead of gdi33. And, in kernel33.dll I redirected Ntdll.dll to otdll.dll.
Finally, after all the editing, Firefox stopped giving procedure entry point not found errors.
But, the result wasn'tO much better. The exact error message was: The application failed to initialize properly. (0xc0000033). Click on ok to terminate the application.
As well, I tried Flash 10.0.12.36, which was similar except had no issues with gdi32. I didn't have to hex edit the w2k DLLs again, but still had to hex edit npswf32.dll to tell it which dll to use. The flash checker says I have version 10.0.12, which is correct, but whenever I go on a flash site, like Youtube or Dailymotion, the video refuses to play, by simply showing a black screen with no sound. On youtube, Opera shows the "playing" icon on the top of the window, but it doesn't play any video. When I right-click on a video/black screen, it doesn't even show the "About Flash Player 10" option, or the "Settings", so disabling hardware acceleration is not an option.
It wasn't even that hard to integrate Win2K APIs into NT 4.0. I was just clueless about it before. Now, the only challenge we have is getting apps to run.

In response to this topic before, I tried OpenOffice 3.0, which claimed also to be "Not a valid Windows NT application." So, I opened up the EXE in Dependency Walker, and found out that MSVCR90.dll was missing. I then added it into the app folder , and found out that it had 2 missing functions in Kernel32.dll, so in HxD, I replaced it with Kernel33.dll. No API functions missing. But, the error "<folder path> is not a valid Windows NT application> persisted.

Then, I tried Chrome 23 <not sure why I chose that version>, which clearly has missing API functions. I could not install it, I extracted it from the ZIP. So, I grabbed Blackwingcat's Chrometool for windows 2000, and renamed all the xp dlls ending in XP (blackwingcat's versions) into 30.
Example- ws2_xp.dll - ws2_30.dll.
I connected all the XP DLLs together, and there were a few other things to fix. First of all, Chrome calls for SHGetKnownFolderPath in Shell32.dll (a function only present in Vista+ Shell32.dll, yet chrome works on XP. To fix this, in HxD, I overwrote SHGetKnownFolderPath with SHGetFolderPathW since they have similar functions. I overwrote the additional characters with NULs, not deleted them, which was the whole reason behind my previous VLC failure. It worked well.

The only other problem was that USERENV.dll needed another function, GetProfileType, which is only available in Windows 2000+. So, I looked in Dependency walker to see which DLLs linked to USERENV.dll, and replaced those functions with the "renamed" Windows 2000 functions in W2K Userenv.dll.

Still, same issue. Blackwingcat has made a tool called Fcwin2k.exe for Windows 2000, which can resolve "not a valid win32 application" messages. But, I have tried all versions of it on Windows NT 4.0, yet they crash. So, it is simply a compatibility problem with some of these programs, like Chrome, Openoffice and Opera. However, other programs have their own problems, like Firefox and Flash. I would bet that Thunderbird would have the same problem as FF, since they are compiled very similarly. If anybody knows of any fixes for Flash or FF, please let me know. Also, I may ask Blackwingcat if he can create an Fcwin-style tool for NT 4.0 (compatibility only).

Thanks everyone for your replies.

PS: The reason why I care so much about newer Flash is that about 70% of Flash content today needs version 10+, including some that needs Flash 11+.

UPDATE 1: I tried redownloading Firefox 3.6, and appropriately hex editing the functions, and the error message went away. But, Firefox did the same thing as VLC (displayed loading cursor, then nothing). FF 7 did the same. I tried Firefox 3.6.28 and 4, but they oddly wouldn't allow hex editing of all the needed functions.

 

how do you edit the functions?  I am rooting for you.



#35
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag

It is a complicated process. I have experimented with NT 4.0 for about 3 months and have recently figured out how to do it. 

In brief:

1. Open up the application in Dependency Walker and view the DLL calls with missing functions.

For example: user32.dll

2. View the external functions that the DLL calls.

For example: user32.dll calls extra functions in Kernel32.dll, user32.dll, Gdi32.dll and Msvcrt.dll.

3. Get the Windows 2000/XP versions of both the DLL and the ones it calls. (whatever the program minimum requirement is, usually.)

4. Rename the DLLs. Usually I change only one character of each DLL. An updated version of Msvcrt.dll is not needed.

For example: user32.dll - user33.dll

5. Hex edit the selected DLL and replace all of it's regular NT 4.0 external functions with the Windows 2000/XP versions.

6. Place updated DLLs in system32 or application directory.

7. Using a hex editor,tell the application/required external DLL to use the custom version, not the NT 4.0 regular version of the DLL

 

Notes:

1. If you have hex edited a certain Win2K/XP DLL before with its external functions. you don't need to do it again.

2. Apps don't always run on startup. They may look like they are loading, and not start, or simply say they are not a valid Windows NT application.

3. You must overwrite the DLL name and not use the backspace arrow. If that happens, the DLL file size will change and the DLL will become corrupt.

 

It is not a simple task and if you are interested, I can do all of this editing myself. To be honest, I was thinking that once I got the "custom" NT 4.0 apps to work, I would upload them for anyone to download and use. I now know for sure that I will send a message to Blackwingcat sometime over the next few days to see if he can make a compatibility tool for NT.

 

Hope this helps you.



#36
jaclaz

jaclaz

    The Finder

  • Developer
  • 14,419 posts
  • Joined 23-July 04
  • OS:none specified
  • Country: Country Flag
If I may, CFF explorer may make the above workflow easier:
http://www.ntcore.com/exsuite.php
(though I have no idea if it woud run on NT 4).
Possibly other similar tools exist :unsure:

jaclaz

#37
junior600

junior600

    Newbie

  • Member
  • 38 posts
  • Joined 26-April 13
  • OS:Windows 7 x64
  • Country: Country Flag

It is a complicated process. I have experimented with NT 4.0 for about 3 months and have recently figured out how to do it. 

In brief:

1. Open up the application in Dependency Walker and view the DLL calls with missing functions.

For example: user32.dll

2. View the external functions that the DLL calls.

For example: user32.dll calls extra functions in Kernel32.dll, user32.dll, Gdi32.dll and Msvcrt.dll.

3. Get the Windows 2000/XP versions of both the DLL and the ones it calls. (whatever the program minimum requirement is, usually.)

4. Rename the DLLs. Usually I change only one character of each DLL. An updated version of Msvcrt.dll is not needed.

For example: user32.dll - user33.dll

5. Hex edit the selected DLL and replace all of it's regular NT 4.0 external functions with the Windows 2000/XP versions.

6. Place updated DLLs in system32 or application directory.

7. Using a hex editor,tell the application/required external DLL to use the custom version, not the NT 4.0 regular version of the DLL

 

Notes:

1. If you have hex edited a certain Win2K/XP DLL before with its external functions. you don't need to do it again.

2. Apps don't always run on startup. They may look like they are loading, and not start, or simply say they are not a valid Windows NT application.

3. You must overwrite the DLL name and not use the backspace arrow. If that happens, the DLL file size will change and the DLL will become corrupt.

 

It is not a simple task and if you are interested, I can do all of this editing myself. To be honest, I was thinking that once I got the "custom" NT 4.0 apps to work, I would upload them for anyone to download and use. I now know for sure that I will send a message to Blackwingcat sometime over the next few days to see if he can make a compatibility tool for NT.

 

Hope this helps you.

Thanks, I'm trying to do it... I sent you a pm for an information. ^^



#38
junior600

junior600

    Newbie

  • Member
  • 38 posts
  • Joined 26-April 13
  • OS:Windows 7 x64
  • Country: Country Flag

Guys, I don't know if it will be useful, but I found a way to replace the dll on system 32  (for example kernel32.dll etc...). 

 

You must put the new dll (for example the 2000's one) in a folder, for example on C. Rename kernel32.dll in kernel32.dl_ (you need to rename all of the dll you want to replace... For example User32.dll----> user32.dl_ , Advapi32.dll----> Advapi32.dl_  etc..)

 

Now, open the command prompt (from start\all programm\command prompt)

 

1. write "cd\winnt\system32" (without quotation marks)

2.write "ren kernel32.dll kernel32.old.dll" (without quotation marks)

3.write "Expand C:\new dll folder\kernel32.dl_ C:\winnt\system32\kernel32.dll" (without quotation marks)

 

P.S: "new dll folder"  is the folder you have put the new dll. You can rename this folder as you want.

 

Sorry for my bad English xD If you don't undertand, I will upload some screenshot with the process.


Edited by junior600, 13 May 2014 - 12:05 PM.


#39
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag

Guys, I don't know if it will be useful, but I found a way to replace the dll on system 32 (for example kernel32.dll etc...).

You must put the new dll (for example the 2000's one) in a folder, for example on C. Rename kernel32.dll in kernel32.dl_ (you need to rename all of the dll you want to replace... For example User32.dll----> user32.dl_ , Advapi32.dll----> Advapi32.dl_ etc..)

Now, open the command prompt (from start\all programm\command prompt)

1. write "cd\winnt\system32" (without quotation marks)
2.write "ren kernel32.dll kernel32.old.dll" (without quotation marks)
3.write "Expand C:\new dll folder\kernel32.dl_ C:\winnt\system32\kernel32.dll" (without quotation marks)

P.S: "new dll folder" is the folder you have put the new dll. You can rename this folder as you want.

Sorry for my bad English xD If you don't undertand, I will upload some screenshot with the process.

That's a good find. I think it will be useful in the future.

Also, I am not going to upload any "special" NT 4.0 apps until,they are tested and capable of running at least somewhat.

Edited by ironman14, 14 May 2014 - 08:01 PM.


#40
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag
Using these custom-made apps I've tested in the past month, they appear not to start so I think I may use regular, un-tweaked applications for testing with the following method. Thank you very much.

#41
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag
I have tried junior600's method on kernel32.dll, and it worked, but FF7, which the EXE of it only needed that DLL, still called for a missing function, Getprocessiocounters. It could be an external file.

#42
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag

Guys, I don't know if it will be useful, but I found a way to replace the dll on system 32 (for example kernel32.dll etc...).

You must put the new dll (for example the 2000's one) in a folder, for example on C. Rename kernel32.dll in kernel32.dl_ (you need to rename all of the dll you want to replace... For example User32.dll----> user32.dl_ , Advapi32.dll----> Advapi32.dl_ etc..)

Now, open the command prompt (from start\all programm\command prompt)

1. write "cd\winnt\system32" (without quotation marks)
2.write "ren kernel32.dll kernel32.old.dll" (without quotation marks)
3.write "Expand C:\new dll folder\kernel32.dl_ C:\winnt\system32\kernel32.dll" (without quotation marks)

P.S: "new dll folder" is the folder you have put the new dll. You can rename this folder as you want.

Sorry for my bad English xD If you don't undertand, I will upload some screenshot with the process.


I'm talking to you now, junior600. Have you got your NT 4 PC to boot after making this change? Because Mine just hangs at the "Windows NT 4.0 (Build 1381:Service Pack 6) portion of the startup. It may take a few minutes to work, but I don't know. By the way, I replaced kernel32.dll and Ntdll.dll.

#43
junior600

junior600

    Newbie

  • Member
  • 38 posts
  • Joined 26-April 13
  • OS:Windows 7 x64
  • Country: Country Flag

 

Guys, I don't know if it will be useful, but I found a way to replace the dll on system 32 (for example kernel32.dll etc...).

You must put the new dll (for example the 2000's one) in a folder, for example on C. Rename kernel32.dll in kernel32.dl_ (you need to rename all of the dll you want to replace... For example User32.dll----> user32.dl_ , Advapi32.dll----> Advapi32.dl_ etc..)

Now, open the command prompt (from start\all programm\command prompt)

1. write "cd\winnt\system32" (without quotation marks)
2.write "ren kernel32.dll kernel32.old.dll" (without quotation marks)
3.write "Expand C:\new dll folder\kernel32.dl_ C:\winnt\system32\kernel32.dll" (without quotation marks)

P.S: "new dll folder" is the folder you have put the new dll. You can rename this folder as you want.

Sorry for my bad English xD If you don't undertand, I will upload some screenshot with the process.


I'm talking to you now, junior600. Have you got your NT 4 PC to boot after making this change? Because Mine just hangs at the "Windows NT 4.0 (Build 1381:Service Pack 6) portion of the startup. It may take a few minutes to work, but I don't know. By the way, I replaced kernel32.dll and Ntdll.dll.

 

No, it doesn't work :/ It wil appear the BSOD



#44
ironman14

ironman14

    Member

  • Member
  • PipPip
  • 202 posts
  • Joined 16-October 13
  • OS:Windows 2000 Professional
  • Country: Country Flag
Oh. We were so close! I backed up my VM, expecting the worst. But, I am not sure what to try now. Any ideas?

BTW: That method was a really good suggestion. But, I'm afraid we have a boot problem. Does anyone know how Microsoft does it?

Thanks

Edited by ironman14, 06 July 2014 - 06:55 PM.





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users



How to remove advertisement from MSFN