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:
- Mit einem Admin-Account am Rechner anmelden.
- Die Datei Windows8.1-KB917607-x64.msu-Datei (KB817607, https://www.microsoft.com/de-de/download/details.aspx?id=47671)
runterladen und irgendwo ablegen.
- Einen leeren Ordner anlegen (z.B. "expanded") als
unterordner des Ordners, in welchem die *.msu-Datei liegt.
- 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.
- Im Ordner "expanded" oder, wie immer er benannt wurde,
wieder einen Ordner, z.B. cab anlegen. Und im Kommandofenster in diesen
Ordner wechseln.
- 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.
- 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)
- 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.
- 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.
- Die DLL's (ftlx041e.dll, ftlx0411.dll, ftsrch.dll) in den
extrahierten Dateien suchen und ins c:\Windows\system32-Verzeichniss
kopieren (hinzufügen).
- 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.