Benutzer von Windows 10 laufen bei Verwendung älterer Programme in das Problem, dass deren Hilfedateien im .hlp-Format nicht mehr geöffnet werden können. Hier einige Informationen zu diesem Themenkomplex.
Anzeige
Auf das Problem bin ich erneut in diesem MS Answers-Forenthread aufmerksam geworden. Da es erfahrungsgemäß einige Nutzer trifft, eine etwas breitere Erklärung.
Das Problem mit den .hlp-Dateien
Microsoft unterstützt das Hilfeformat (.hlp) seit Windows Vista nicht mehr. Hintergrund ist der Umstand, dass dieses Format bzw. dessen Anzeige eine wandelnde Sicherheitslücke darstellt (siehe Linkliste).
Ab Windows Vista bietet Microsoft daher das Hilfsprogramm WinHelp32.exe mitsamt einem Installer zum Downloads an. Hier die Download-Adressen:
WinHlp32.exe für Windows Vista
WinHlp32.exe für Windows Windows 7
WinHlp32.exe für Windows Windows 8
WinHlp32.exe für Windows Windows 8.1
Anzeige
Wenn man sich dieses Installer-Paket herunterlädt und installiert, wird für die Windows-Version angepasste WinHelp32.exe installiert und die Anzeige von Hilfedateien klappt wieder.
Aber unter dem Strich gilt: Der Support für .HLP-Dateien ist seit Windows Vista beendet. Mit Windows 8.1 gab es bereits das Problem, dass ein Update im Winter 2014 die Installerlösung zum Nachrüsten von WinHelp32.exe zunichte machte. Es dauerte elendig lange, bis Microsoft einen Fix herausbrachte, so dass die Hilfedateianzeige in Windows 8.1 wieder funktionierte. Die Story habe ich im Blog dokumentiert (siehe Linkliste am Artikelende).
Das Problem mit Windows 10 und den .hlp-Dateien
Windows 10-Nutzer haben schlicht das Problem, dass Microsoft kein Installerpaket für WinHelp32.exe bereitstellt. Hintergrund dürfte, neben dem Sicherheitsaspekt, sein, dass dieses Installerpaket bei jedem Patchday oder zumindest bei jedem Major Update (Version 1511, 1607 etc.) überarbeitet werden muss. Das will Microsoft sich nicht ans Bein binden.
Welche Lösungen gibt es?
Benötigt eine alte Anwendung noch die Anzeige von .hlp-Dateien ist die eleganteste Lösung, eine virtuelle Maschine mit Virtualbox, Hyper-V oder VMware Workstation zu verwenden. Dort wird Windows 7 SP1 sowie die alte Anwendung eingerichtet und dann die für die Windows-Version angepasste WinHelp32.exe installiert.
Es gibt eine Ausweichlösung, von der ich aber abrate. Dort wird die WinHelp32.exe aus Windows XP kopiert. Diese wird auch hier für ein 32-Bit-Windows 10 propagiert. Der verlinkte Download (auch hier) auf die WinHlp32.exe-Download-Seite von Komeil Bahmanpour ist tot (siehe auch diesen Forenbeitrag). Neben der lizenzrechtlichen Problematik wird bei deskmodder auch auf das Sicherheitsproblem hingewiesen.
Für Windows 8.1 war einige Zeit eine "Umgehungslösung" für Windows8.1-KB917607-x64.msu hoch im Kurs. Das verlinkte Paket ließ sich zwar installieren, aber WinHelp32.exe funktionierte nicht. Jemand hat sich die Mühe gemacht, das Installerpaket zu entpacken und dann eine Umgehungslösung per Batchprogramm bereitzustellen, die funktionierte.
Im Blog-Beitrag Using HLP files in Windows 10 von September 2015 greift jemand diesen Ansatz auf und beschreibt, wie man unter Windows 10 vorgeht. Der Ansatz ist auch hier beschrieben. Auch bei MS Answers gibt es einen Thread dazu.
Der Pferdefuß an allen diesen Ansätzen – mit Ausnahme meiner skizzierten Virtualisierungslösung ist aber, dass die oben skizzierten "Hacks" genau bis zum nächsten Major Update (Version 1511, 1607) halten. Möglicherweise hilft der Help Explorer Viewer aus der Patche (achtet beim CNET-Download darauf, dass keine Adware beigefügt wird).
Vielleicht hilft es den wenigen Betroffenen noch weiter. Unter dem Strich gilt aber: Verabschiedet euch von den alten Programmen samt .HLP-Dateien oder bleibt bei Windows 7 SP1.
Es funktioniert unter Windows 10 noch
Ergänzung: Ich habe gerade unter Windows 10 Creators Update die Hilfslösung (WinHelp32 aus Windows 7 installieren) probiert. Einfach die Cab-Datei von hier (gelöscht) herunterladen und in einen lokalen Ordner entpacken. Dann in der Install.cmd im Settings-Abschnitt folgende Zeilen hinzufügen:
set WindowsVersion=7
goto :BypassVersionError
Wenn man die Install.cmd über Als Administrator ausführen startet, wird die WinHelp32.exe sauber installiert und funktioniert.
Ergänzung 2: Leider wurde die Download-Seite für die Datei gelöscht, so dass die Lösung nicht mehr verwendbar ist. Ihr könnt die Hinweise in diesem Beitrag probieren, ob die weiter führen.
Ähnliche Artikel:
WinHlp32: Fix für KB917607-Problem veröffentlicht
Abhilfe für KB917607 (WinHlp32-Bug) in Sicht
Windows 8.1: WinHelp32.exe Patch funktioniert nach Dezember Patchday nicht mehr
Windows 8.1: Alte Windows-Hilfedateien anzeigen
Windows 8: Alte hlp-Dateien anzeigen
Anzeige
Hallo Herr Born,
das ist ja alles schön und gut. Meistens sind es ältere Hilfs- oder Produktionsprogramme, die irgendwann mal für Windows NT, 2000 oder XP geschrieben wurden, deren .HLP-Files man bis Windows 7 /8.x mit ein wenig Patchen anzeigen konnte. Nachdem der XP-Mode beerdigt wurde, laufen viele dieser Programme unter W10 aber immer noch problemlos, bloß die Hilfe tut nicht mehr!
Und viele ältere Programme werden trotz weiterer-Funktionierens nicht mehr weiterentwickelt.
Dabei hätte Microsoft der breiten Userbasis nur einen Converter oder sicheren Viewer liefern können, um auf eine neuere HLP-Version umzustellen.
Mit OfficeDokumenten hat es doch auch geklappt, ein neues Datenformat einzuführen.
"Einfach die Cab-Datei von hier herunterladen und in einen lokalen Ordner entpacken. Dann in der Install.cmd im Settings-Abschnitt folgende Zeilen hinzufügen: . . ."
Leider finde ich "hier" keine Cab-Datei zum Download, Nur eine MSU-Datei, in der zwar zwei Cab-Dateien stecken, in denen dann aber auch keine Install.cmd zu finden ist.
Bin ich blind oder was ist sonst mein Fehler?
Ich denke, der letzte Satz trifft zu. Gerade noch erneut den Link probiert, die winhlp32-windows-7-x86-x64-komei.cab-Datei von der Komeil-Seite geladen, diese entpackt und dann waren die genannten Dateien vorhanden.
Dass der Ansatz funktioniert, habe ich vor 14 Tagen in einem Buchprojekt an der Windows 10 Version 1703 verifiziert.
Hallo Her Born,
ja ich war blind. Danke für Ihre Infos. Mal sehen ob es klappt.
Mit freundlichem Gruß,
Konrad
Vielen Dank für den nützlichen Tipp. Es hat alles in allem tadellos funktioniert, meine HLP Dateien funzen wieder :-D
Hallo Herr Born,
ich öffne Install.cmd dann öffnet sich eine schwarze Datei mit
Windows Help programm
XXX
XXX
XX
Drücken Sie eine beliebige Taste..
Wenn ich "set WindowsVersion=7" eingeben möchte schließt sich die Datei.
Was mach ich falsch
Gruß Volker M
Im Windows-Editor öffnen und die Korrektur eingeben!
Hallo,
die Nachinstallation über die .cab Datei funktioniert wunderbar.
Allerdings funktioniert dann innerhalb der Hilfe die Suchfunktion nicht.
Gibt es dafür auch noch einen Workaround oder muss man hierauf dann einfach unter Windows 10 verzichten?
Vielen Dank.
MfG
Thomas
Zur Suchfunktion kann ich nichts sagen.
Lieber Herr Born,
habe alles durchgeführt wie beschrieben. Nachdem ich in der Install.cmd im Settings-Abschnitt die Zeilen
set WindowsVersion=7
goto :BypassVersionError
hinzugefügt hatte, funktionierte es zunächst nicht. Erst als ich diese beiden Zeilen an den Anfang des Abschnitts gepackt hatte, wurde die winhlp.exe installiert. Allerdings funktioniert die Hilfefunktion immer noch nicht. Hat sich seit Mai 2017 was geändert?Mache ich was falsch? Hätte ich die beiden Zeilen vielleicht nicht hinzufügen sondern im Settings-Abschnitt die vorhandenen Inhalte überschreiben sollen?
Für Hilfe wäre ich sehr dankbar!
Viele Grüße, Sylvia
Hab das ewig nicht mehr getestet und mir fehlt die Zeit und die Motivation, noch einen Test zu machen, speziell, da Windows 10 eine ewige Baustelle ist.
Ok, Korrektur – hat mich interessiert. Das Problem: In der neuesten Windows 10 Fall Creators Update-Version fehlt der Ordner en-US im Windows-Verzeichnis. Daher läuft die Batchdatei in den Wald.
Ich habe den Ordner manuell angelegt und die cmd-Datei ausgeführt. Es gibt zwar dann einen Fehler in der Batchdatei, weil die winhlp.exe.mui im leeren Ordner nicht gefunden und der Eigentümer nicht gesetzt werden kann. Aber die cmd-Datei kopiert die Dateien. Anschließend fand sich die winhlp.exe.mui im neuen Ordner und die Anzeige von .hlp-Dateien funktionierte.
Schade, trotzdem danke für die Antwort
Lieben Dank!!!! Das werde ich nächstes Wochenende ausprobieren und berichten, ob ich die Batchdatei aus dem Wald locken konnte. Bis dahin viele Grüße aus Berlin
Lieber Herr Born,
schade, funktioniert irgendwie nicht. Den leeren Ordner en-US gab es schon im Windows-Verzeichnis. Die cmd-Datei kopiert 45 Dateien. Die winhlp.exe.mui kommt aber im Ordner en-US leider nicht an. Die Batchdatei meckert gleich am Anfang: Terminating all possible running instances of WinHlp32…
FEHLER: Ungültige Syntax. Erwarteter Wert für "/im"
Geben Sie "TASKKILL /?" ein, um die Syntax anzuzeigen.
Blöde Frage: wie und wo und was soll ich tun? Den Befehl als Administrator ausführen?
Und des Weiteren zu en-US: Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
0 Dateien erfolgreich verarbeitet, bei 1 Dateien ist ein Verarbeitungsfehler aufgetreten.
Noch 'ne blödere Frage: Der Datenträger auf meinem Rechner heißt OS (C:) – kann das der Grund sein?
Ratlose Sonntagsgrüße, Sylvia
Das Script muss auf jeden Fall über 'Als Administrator ausführen' aufgerufen werden. Vorher zur Sicherheit einen Neustart ausführen, um laufende WinHelp-Instanzen zu beenden.
Bei meinem Kurztest auf Windows 10 Fall Creators Update hatte ich zuerst auch Syntax-Fehler, weil der Ordner en-US nicht vorhanden war. Hatte dann versuchsweise im BAT-Programm den Pfad von en-us auf de-de geändert. War aber nicht so gut.
Habe mir dann den Ordner mit en-us selbst angelegt, das ursprüngliche Batch-Programm mit den oben angegebenen Modifikationen (Windows 7-Kompatibilität) erneut aufgesetzt und mit administrativen Berechtigungen ausführen lassen. Es gab dann nur noch einen Fehler, dass die MUI-Datei in en-us nicht gefunden werden kann (logisch, ich hatte ein leeres Verzeichnis angezeigt). Danach war die mui-Datei im Ordner zu finden und die HLP-Datei, die ich zum Testen in die virtuelle Maschine mit Win10 kopiert habe, wurde problemlos geöffnet. Mehr kann ich dazu nicht sagen – ist ja schon wieder ein paar Tage her, dass ich das kurz angetestet habe. Die Volumenbezeichnung spielt für das Batch-Programm keine Rolle.
Hallo, ich habe das mit der Cab-Datei von der Seite von dem Komeil Bahmanpour wie beschrieben gemacht (in ein Verzeichnis entpackt). Die Install.cmd entsprechend editiert (die zwei Zeilen hinter den beiden vorhandenen Zeilen im Settings-Abschnitt einkopiert).
Dann die Install.cmd per rechte Maustaste "Als Administrator ausgeführt".
Hat alles super funktioniert! Bin begeistert!
Mein OS: Windows 10 Version 1709.
Danke für den Tip. Hat alles genauso funktioniert wie beschrieben. Wie bereits angemerk fehlt nur die Suchfunktion. Aber darauf kann ich zumindest verzichten.
Ich bin immer wieder erfreut das es noch Leute gibt die nicht nur meckern sondern konkrete Tipps liefern können. Weiter so!!
m.f.g.
Frank
Noch ne Anmerkung dazu:
Nach jedem Update von Windows muss die WinHelp32 neu wie oben Beschrieben installiert werden.
m.f.g.
Frank
Vielen Dank für die Tipp's hat funktioniert und die Hilfe für mein Programm C-Control/plus funktioniert wieder.
Viele Grüße
Udo
Zitat: "Ergänzung: Ich habe gerade unter Windows 10 Creators Update die Hilfslösung (WinHelp32 aus Windows 7 installieren) probiert. Einfach die Cab-Datei von hier herunterladen"
Ähm, von wo bitte? Da denkt man, man bekommt Hilfe. Pustekuchen…
Der Artikel ist von August 2016 – bei Windows 10 sind das 'Äonen'. Die Erklärung, warum das "von hier" nicht mehr als Link weiter führt: 'Das ist das Wunder Internet, wo Links schlicht brechen, weil es die Webseiten nicht mehr gibt'. Der Link ist irgendwann gebrochen – und wenn ich pro Tag 10 bis 20 dieser gebrochenen Links im Blog angezeigt bekomme, lasse ich die löschen – und manchmal treibe ich nicht den Aufwand '(entfernt)' in den Text einfügen zu lassen.
Ich habe den Kommentar aber zum Anlass genommen, eine zweite Ergänzung mit einem entsprechenden Hinweis zu posten. Von daher danke für den Hinweis.
Ansonsten Kopfschütteln über den Kommentar. Wer den Blog-Beitrag und die Kommentare durchgelesen hat, könnte möglicherweise auf die Idee kommen, dass da schlicht ein Link gebrochen ist oder die Lösung nicht mehr funktioniert. Und wegen Pustekuchen: Im Text gab es eine Hilfe: VM mit Win 7.
Ich hatte mich gewundert, warum die "Hilfe" wieder nicht ging (vermutlich wg. dem oben beschriebenen Punkt Neuinstallation nach WinUpdate) und habe dabei diese Seite gefunden. Da viele die veränderte Datei
Install.cmd
suchen -> der Inhalt:
@echo off
:: —————————————————————————
:: Settings
set MuiFileName=winhlp32.exe.mui
set ExeFileName=winhlp32.exe
set WindowsVersion=7
goto :BypassVersionError
:: —————————————————————————
:: Displaying installer information
echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo ³ Windows Help program (WinHlp32) installer for Windows 7 ³
echo ³ Revision 2 ³
echo ³ June 14, 2009 ³
echo ³ Copyright (c) 2009 Chortkeh. All rights reserved. ³
echo ³ Command-line scripting by Komeil Bahmanpour. ³
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
:: —————————————————————————
:: Windows version detection
echo Setup is detecting Windows version…
ver | findstr /il "6\.1\." > nul
if %errorlevel% equ 0 (
echo Microsoft Windows 7 [Version 6.1] detected.
set WindowsVersion=7
goto :BypassVersionError
)
ver | findstr /il "6\.0\." > nul
if %errorlevel% equ 0 (
echo Microsoft Windows Vista / Server 2008 [Version 6.0] detected.
set WindowsVersion=6
goto :BypassVersionError
)
ver | findstr /il "5\.2\." > nul
if %errorlevel% equ 0 (
echo Microsoft Windows Server 2003 [Version 5.2] detected.
set WindowsVersion=5
goto :BypassVersionError
)
ver | findstr /il "5\.1\." > nul
if %errorlevel% equ 0 (
echo Microsoft Windows XP [Version 5.1] detected.
set WindowsVersion=5
goto :BypassVersionError
)
ver | findstr /il "5\.0" > nul
if %errorlevel% equ 0 (
echo Microsoft Windows 2000 [Version 5.0] detected.
set WindowsVersion=5
goto :BypassVersionError
)
echo Inappropriate Windows version. Setup must be run under one of the following
echo operating systems:
echo.
echo * Microsoft Windows 7
echo * Microsoft Windows Server 2008
echo * Microsoft Windows Vista
echo * Microsoft Windows Server 2003
echo * Microsoft Windows XP
echo * Microsoft Windows Server 2000
echo
pause
goto :eof
:: Mandatory for older Windows versions incapable of understanding EOF,
:: eventhough they don't take CMD files as BAT.
exit
:: —————————————————————————
:: Initialization
:BypassVersionError
if not %WindowsVersion%==7 (
echo Inappropriate Windows version. Setup must be run under one of the following
echo operating systems:
echo.
echo * Microsoft Windows 7
echo
pause
goto :eof
)
:: Preserve current directory for further referrings.
set InitialDirectory=%cd%
:: Change drive and path to where the batch file was started from. This is
:: required when your batch file is run-as-administrator, because it sets
:: System32 the working (current) directory.
cd /d "%0\.."
:: —————————————————————————
:: Windows 7 installation
:InstallFor7
echo.
echo Terminating all possible running instances of WinHlp32…
taskkill /f /im %ExeFileName% /t
:: No error checking is required, becasue if it's not opened so far, an error will occur.
echo.
echo Taking the ownership of system's existing %MuiFileName%…
takeown /f "%SystemRoot%\en-US\%MuiFileName%"
echo.
echo Granting %UserName% full-access permission to system's existing %MuiFileName%…
icacls "%SystemRoot%\en-US\%MuiFileName%" /grant "%UserName%":F
echo.
echo Copying %MuiFileName% to system…
xcopy /r /y /h /q %MuiFileName% "%SystemRoot%\en-US"
echo.
if errorlevel 1 goto :Error
echo Taking the ownership of system's existing %ExeFileName%…
takeown /f "%SystemRoot%\%ExeFileName%"
echo.
echo Granting %UserName% full-access permission to system's existing %ExeFileName%…
icacls "%SystemRoot%\%ExeFileName%" /grant "%UserName%":F
echo.
echo Copying %ExeFileName% to system…
xcopy /r /y /h /q %ExeFileName% "%SystemRoot%"
echo.
if errorlevel 1 goto :Error
echo Updating Registry entries…
reg add "HKLM\SOFTWARE\Microsoft\WinHelp" /v "AllowProgrammaticMacros" /t REG_DWORD /d "0x00000001" /f
reg add "HKLM\SOFTWARE\Microsoft\WinHelp" /v "AllowIntranetAccess" /t REG_DWORD /d "0x00000001" /f
if %PROCESSOR_ARCHITECTURE%==AMD64 (
reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\WinHelp" /v "AllowProgrammaticMacros" /t REG_DWORD /d "0x00000001" /f
reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\WinHelp" /v "AllowIntranetAccess" /t REG_DWORD /d "0x00000001" /f
)
echo.
if errorlevel 1 goto :Error
pause
goto :eof
:: —————————————————————————
:: Error management
:Error
echo Error installing WinHlp32
echo.
echo Setup will now exit.
echo
pause
goto :eof
Hallo,
auch für Windows 10 gibt es hier etwas.
https://www.majorgeeks.com/files/details/winhlp32_for_windows_10.html
HTH
https://windowsunited.de/anleitung-so-oeffnet-ihr-hlp-dateien-in-windows-10/
Hallo!
Hier unter Lösung 7 gibt's einige DOS-Befehle, die man eingeben muss. Zugegeben: man muss sich etwas konzentrieren und ich musste in Zeile 12 de-us gegen de-DE ändern. Aber dann funktionierte die alte Windows Hilfe unter W10 wieder.
Grüsse und Danke!