Opening old help files


mm71

Well-known member
Local time
6:23 PM
Posts
137
OS
Windows 11 Home Edition Version 22H2 (OS Build 22621.3296)

My Computer

System One

  • OS
    Windows 11 Home Edition Version 22H2 (OS Build 22621.3296)
    Computer type
    Laptop
    Manufacturer/Model
    Dell Inspiron 7506 2-in-1
    CPU
    11th Generation Intel® Core™ i5-1135G7 Processor
    Memory
    12GB
    Graphics Card(s)
    Intel Iris Xe
    Monitor(s) Displays
    15.6-inch FHD (1920 x 1080) Truelife
    Screen Resolution
    1920 x 1080
    Hard Drives
    512GB M.2 PCIe NVMe Solid State Drive
    Keyboard
    English International Backlit Silver
    Mouse
    Microsoft HID Device
    Browser
    Microsoft Edge
    Antivirus
    Trial version of McAfee

My Computer

System One

  • OS
    Windows 11 Home Edition Version 22H2 (OS Build 22621.3296)
    Computer type
    Laptop
    Manufacturer/Model
    Dell Inspiron 7506 2-in-1
    CPU
    11th Generation Intel® Core™ i5-1135G7 Processor
    Memory
    12GB
    Graphics Card(s)
    Intel Iris Xe
    Monitor(s) Displays
    15.6-inch FHD (1920 x 1080) Truelife
    Screen Resolution
    1920 x 1080
    Hard Drives
    512GB M.2 PCIe NVMe Solid State Drive
    Keyboard
    English International Backlit Silver
    Mouse
    Microsoft HID Device
    Browser
    Microsoft Edge
    Antivirus
    Trial version of McAfee
I have written a new tool called hlp4win11 to enable legacy HLP file support for Windows 11 (yes, even 24H2 on which old methods do not work):
May I make a suggestion? You've hard-coded a need for BITS to transfer the file, which is unnecessary since the download file is just under 1 MB.

Using Invoke-WebRequest as a fallback method should be a simple change.
 

My Computer

System One

  • OS
    Windows 7
you can use this one. and you can run old 16-bit software on x64 with it as well. simple to use

 

My Computer

System One

  • OS
    Windows 11 Pro
May I make a suggestion? You've hard-coded a need for BITS to transfer the file, which is unnecessary since the download file is just under 1 MB.

Using Invoke-WebRequest as a fallback method should be a simple change.
Thank you for the suggestion. Downloading is now simplified. New version available:
 

My Computer

System One

  • OS
    Windows 11
It's also possible to extract the required files from the last version available from Microsoft, place them in separate folder, e.g. "Program Files (x86)/winhelp", write a small shim with the application compatibility toolkit to redirect calls to winhelp.exe and apply it.
 

My Computer

System One

  • OS
    Windows 11 23H2 Pro
    Computer type
    PC/Desktop
    Manufacturer/Model
    MSI
    CPU
    i3-1215U
    Memory
    8GB
    Monitor(s) Displays
    Dell S2721
    Screen Resolution
    3840x2160
    PSU
    External 65W
    Keyboard
    Cherry mechanical (Blue)
    Mouse
    Microsoft
    Browser
    FireFox
    Antivirus
    MS
It's also possible to extract the required files from the last version available from Microsoft, place them in separate folder, e.g. "Program Files (x86)/winhelp", write a small shim with the application compatibility toolkit to redirect calls to winhelp.exe and apply it.
An advantage of the suggested manual extraction method to a separate directory is that the procedure does not need to be carried out after installing Windows 10 or 11 Feature Update. The disadvantage is that the contextual help (F1) does not work perfectly in old applications, and also there are a lot of manual steps to apply the method correctly.

The advantage of hlp4win11 method is that it is a single line command that automatically does all the work, and enables proper contextual help (F1) in old applications. The disadvantage is that the hlp4win11 needs to be applied after installing Windows 10 or 11 Feature Update.
 
Last edited:

My Computer

System One

  • OS
    Windows 11
It's also possible to extract the required files from the last version available from Microsoft, place them in separate folder, e.g. "Program Files (x86)/winhelp", write a small shim with the application compatibility toolkit to redirect calls to winhelp.exe and apply it.
AFAIK, everyone has followed the exact same procedure by replacing the current Windows files for WinHelp. Which leads to two problems:
- Files are protected by TrustedInstaller (most devs do the takeown & icacls trick, without bothering to restore the original ACL)​
- Windows will clobber your changes on the next major upgrade​

By extracting the MSU files to \Program Files or \Program Files (x86), we can easily run WinHelp from a separate folder. The last step is to update the registry value for the "shell\open\command", and redirect to our new WinHelp.exe.

I wrote this script, which works on W10 (32 & 64-bit) or W11. If you have multiple languages installed on Windows, it will copy over all the localized MUI files that match.
 

Attachments

  • Windows 10 x64-2025-04-12-14-41-26.webp
    Windows 10 x64-2025-04-12-14-41-26.webp
    64.8 KB · Views: 1
  • Restore_WinHelp.ps1
    Restore_WinHelp.ps1
    3.3 KB · Views: 6

My Computer

System One

  • OS
    Windows 7
Howdy @garlin ... if I run that under PowerShell 7 without admin, it kicks off Windows PowerShell. Not a big deal, but you can [Diagnostics.Process]::GetCurrentProcess().Path to get the current host's path.
 

My Computer

System One

  • OS
    Windows 11 Pro 24H2 [rev. 4652]
    Computer type
    PC/Desktop
    Manufacturer/Model
    Intel NUC12WSHi7
    CPU
    12th Gen Intel Core i7-1260P, 2100 MHz
    Motherboard
    NUC12WSBi7
    Memory
    64 GB
    Graphics Card(s)
    Intel Iris Xe
    Sound Card
    built-in Realtek HD audio
    Monitor(s) Displays
    Dell U3219Q
    Screen Resolution
    3840x2160 @ 60Hz
    Hard Drives
    Samsung SSD 990 PRO 1TB
    Keyboard
    CODE 104-Key Mechanical with Cherry MX Clears
    Antivirus
    Microsoft Defender
Thanks. I just wrote this over lunch. Just wanted to see if WinHelp really cared about living under System32 or not.
 

My Computer

System One

  • OS
    Windows 7
Updated the script with three changes:

1. New command-line argument to allow macros, -AllowMacros
2. New command-line argument to allow intranet access, -AllowIntranet
3. Allow script elevation when running PS 6 or 7

MS wants to remind you enabling macros and intranet access is very dangerous, and part of the reason they removed WinHelp from Windows. /shrug
 

Attachments

My Computer

System One

  • OS
    Windows 7
The advantage of hlp4win11 method is that it is a single line command that automatically does all the work, and enables proper contextual help (F1) in old applications. The disadvantage is that the hlp4win11 needs to be applied after installing Windows 10 or 11 Feature Update.
That's fair. The reason for adding the Application Compatibility shim is that the F1 help works correctly for each program that you've shimmed. Which is more work. (Also I've never been able to successfully make a Compatability Mode using Win 10 or 11 which would make it simple to apply to multiple programs.)
AFAIK, everyone has followed the exact same procedure by replacing the current Windows files for WinHelp. Which leads to two problems:
- Files are protected by TrustedInstaller (most devs do the takeown & icacls trick, without bothering to restore the original ACL)- Windows will clobber your changes on the next major upgrade
I've often wondered why robocopy /b isn't used to avoid changing the permissions. If you don't change the ownership and permissions you don't have to change them back.

One other point. As far as I can see the difference between the 32 and 64 bit versions of the msu is that the 64 bit version contains 2 copies of each file, which I assume is connected to the file protection system. The executable and dll files are all 32 bit and identical in both versions.
 

My Computer

System One

  • OS
    Windows 11 23H2 Pro
    Computer type
    PC/Desktop
    Manufacturer/Model
    MSI
    CPU
    i3-1215U
    Memory
    8GB
    Monitor(s) Displays
    Dell S2721
    Screen Resolution
    3840x2160
    PSU
    External 65W
    Keyboard
    Cherry mechanical (Blue)
    Mouse
    Microsoft
    Browser
    FireFox
    Antivirus
    MS
The copy method isn't the problem, but the install process has to have TrustedInstaller rights, or otherwise resort to brute force. I've seen some versions of an install script correctly restore the permissions, but it's uncommon. What works vs. what's right can be two different things.

The drawback of overwriting any Windows file with a legacy file is that SFC or DISM repair actions will replace them (as they should). You only replaced files in the Windows folders, but not in WinSxS where the "correct versions" reside. Extracting WinHelp to its own folder bypasses this need. Tampering with WinSxS creates a new problem if you wanted to install future updates.

WinHelp has always been a 32-bit app, given its heritage. I presume the reason for a 64-bit version is to add WOW64 support in the registry.
 

My Computer

System One

  • OS
    Windows 7

Latest Support Threads

Back
Top Bottom