WinHlp32 und Windows 10

Win10 enthält nur eine Dummy-WinHlp32.exe-Datei mit wenigen Kilobytes, die einen auf eine Microsoft-Webpage führt. Im besten Fall findet man hier WinHlp32.exe für Win8.1. Der Installer meldet dann aber, dass dies nicht unter Win10 installiert werden kann. 

Eine funktionsfähige WinHlp32.exe muss man manuell installieren. Hier eine Anleitung für ein 64bit-Windows 10:

  1. Mit einem Admin-Account am Rechner anmelden.
  2. Die Datei Windows8.1-KB917607-x64.msu-Datei (KB817607, https://www.microsoft.com/de-de/download/details.aspx?id=47671) runterladen und irgendwo ablegen. 
  3. Einen leeren Ordner anlegen (z.B. "expanded") als unterordner des Ordners, in welchem die *.msu-Datei liegt.
  4. Dann ein Kommandofenster öffnen, in den Ordner der *.msu-Datei wechseln und mittel expand Windows8.1-KB917607-x64.msu -F:* expanded (wobei  das -F:* für "-Files: >all>" steht) entpacken.
  5. Im Ordner "expanded" oder, wie immer er benannt wurde, wieder einen Ordner, z.B. cab anlegen. Und im Kommandofenster in diesen Ordner wechseln. 
  6. Die Datei Windows8.1-KB917607-x64.cab auch noch extrahieren: expand Windows8.1-KB917607-x64.cab -F:* cab diese *.cab-Datei in den Ornder cab entpacken. 
  7. Damit die wenige Kilobyte kleine WinHlp32.exe im Windows-Verzeichnis durch die richtige, ca. 279kByt große WinHlp32.exe überschrieben werden kann, muss man zuerst den Besitzt der Datei übernehmen (https://technet.microsoft.com/de-de/library/cc753659(v=ws.11).aspx), und sich dann auch als Administrator die Zugriffsrechte einräumen (https://technet.microsoft.com/de-de/library/cc754344(v=ws.11).aspx).  Auf der Kommandozeile (mit Admin-Rechten) geht dies mittels
    takeown /f "%WINDIR%\WinHlp32.exe" /a
    icacls "%WINDIR%\WinHlp32.exe" /grant *S-1-5-32-544:F
    Das *S-1-5-32-544 ist dabei die von der jeweiligen Landessprache unabhängige Bezeichnung der Gruppe "Administratoren" (https://support.microsoft.com/de-de/help/243330/well-known-security-identifiers-in-windows-operating-systems)
  8. Entsprechend auch für die Dateien c:\Windows\de-DE\WinHlp32.exe.mui und c:\Windows\en-US\WinHlp32.exe.mui den Besitz übernehmen und die Rechte einräumen.
    takeown /f "%WINDIR%\de-DE\WinHlp32.exe.mui" /a
    takeown /f "%WINDIR%\en-US\WinHlp32.exe.mui" /a
    takeown /f "%WINDIR%\System32\de-DE\ftsrch.dll.mui" /a
    icacls "%WINDIR%\de-DE\WinHlp32.exe.mui" /grant *S-1-5-32-544:F
    icacls "%WINDIR%\en-US\WinHlp32.exe.mui" /grant *S-1-5-32-544:F
    icacls "%WINDIR%\System32\de-DE\ftsrch.dll.mui" /grant *S-1-5-32-544:F
    Bei Bedarf dies auch in den Verzeichnissen weiterer Sprachen durchführen.
  9. Jetzt in den extrahierten Dateien nach winhlp32.exe suchen. Falls es diese Datei (nicht gemeint sind die winhlp32.exe.mui-Dateien!) zweimal in unterschiedlichen Verzeichnissen gibt: Das Verzeichnis amd64… ist das Richtige für ein 64bit-Windows, auch mit Intel-Prozessor! Diese WinHlp32.exe nach c:\Windows kopieren. 
  10. Die DLL's (ftlx041e.dll, ftlx0411.dll, ftsrch.dll) in den extrahierten Dateien suchen und ins c:\Windows\system32-Verzeichniss kopieren (hinzufügen).
  11. Nun noch die *.mui-Dateien für English und die gewünschten zusätzlichen Sprachen kopieren: Z.B. unter  amd64_microsoft-windows-winhstb.resources_31bf3856ad364e35_6.3.9600.20470_de-de_1ab8cd412c1028d0 findet sich die Datei WinHlp32.exe.mui, die nach c:\Windows\de-DE kopiert werden muss. Und auch die Datei ftsrch.dll.mui-Datei aus dem Verzeichnis muss nach c:\windows\system32\de-DE kopiert werden. Entspechend geg. für weitere Sprachen.
Wenn man bei den *.mui-Dateien keinen Fehler gemacht hat und es keine Probleme beim Überschreiben der Dateien gab, dann lässt sich WinHlp32.exe jetzt ohne den Fehler 9009 starten.
Diese Prozedere muss bei Win10 nach den meist halbjährliche Updates (1703, 1710, ...) jeweils wiederholt werden! Daher empfiehlt es sich, die aus dem cab-Ordner zusammengesuchten Dateien, eventuell schon mit der passenden Ordnerstruktur für das nächste Windowsupdate bereitzulegen. Damit vereinfacht sich die Sache auf Schritt 7, 8 und noch eine Kopier-Aktion, welche dann z.B. mittels den folgenden Zeilen in einer Batchdatei erledigt werden kann:
%~d0
cd %~p0
copy winhlp32.exe "%WINDIR%\winhlp32.exe"
copy de-de\*.* "%windir%\de-de"
copy en-us\*.* "%windir%\en-us"
copy system32\*.* "%windir%\system32"
Dabei wurde angenommen, dass die Batchdatei in dem Verzeichnis liegt, in dem man die neue winhlp32.exe bereitgelegt hat.
 
Warnung: *.hlp-Dateien können beliebige API-Funktionen aus beliebigen DLL's verwenden. Somit also auch z.B. weitere Dateien aus dem Internet laden oder ins Netz senden, an den Sicherheitsmechanismen in den Webbrowsern außen vorbei. Und sicherheitslöcher in WinHlp32.exe stopft Microsoft auch nicht mehr. Zusammen mit den Löchern in den Prozessoren (Meltdown, Spectre) und im Windows-Betriebsystemen sinkt die Sicherheit der Windows-Installation damit, sobald nicht vertrauenswürdige *.hlp-Dateien aufs System gelangen und geöffnet werden.