Próbuję otworzyć plik .chm.
Ściągnąłem źródło, rozpakowałem je, dwukrotnie kliknąłem Waffle.chm
i kliknąłem „Otwórz”, ale bez względu na to, który element w pliku chm kliknę, otrzymuję komunikat:
Navigation to the webpage was canceled.
What you can try:
Retype the address.
Co tu się dzieje?
„odblokowanie” pliku rozwiązuje problem. Zrzut ekranu:
źródło
Win 8 x64:
po prostu przenieś go do innego folderu lub zmień nazwę folderu (w moim przypadku: mój folder to „c #”). unikaj używania symbolu w nazwie folderu. nazwij to literą.
Gotowe.
źródło
Oprócz odpowiedzi Erica Leschinskiego i ponieważ jest to stackoverflow, programowe rozwiązanie:
Windows używa ukrytych rozwidleń plików, aby oznaczyć zawartość jako „pobraną”. Obcięcie tych elementów odblokowuje plik. Nazwa strumienia używanego dla CHM to „Zone.Identifier”. Dostęp do strumieni można uzyskać, dołączając: nazwa strumienia podczas otwierania pliku. (zachowaj kopie zapasowe za pierwszym razem, na wypadek gdyby twój RTL to zepsuł!)
W Delphi wyglądałoby to tak:
Powiedziano mi, że na nierozdzielonych systemach plików (takich jak FAT32) są ukryte pliki, ale nie dotarłem jeszcze do sedna tego.
Funkcja DeleteFile () Ps Delphi powinna również rozpoznawać forki.
źródło
Ostatecznym rozwiązaniem jest umożliwienie pracy protokołu InfoTech w strefie intranetowej.
Dodaj następującą wartość do rejestru, a problem powinien zostać rozwiązany:
Więcej informacji tutaj: http://support.microsoft.com/kb/896054
źródło
Idź do Start
Rodzaj
regsvr32 hhctrl.ocx
Powinieneś otrzymać wiadomość o powodzeniu, taką jak:
Teraz spróbuj ponownie otworzyć plik CHM.
źródło
Innym sposobem jest użycie innego oprogramowania stron trzecich. Ten link pokazuje więcej programów innych firm do przeglądania plików CHM ...
Próbowałem z SumatraPDF i działa dobrze.
źródło
Naprawiłem to programowo w moim oprogramowaniu, używając C ++ Builder.
Zanim przypiszę plik pomocy CHM
Application->HelpFile = HelpFileName
, sprawdzam, czy zawiera on strumień „Zone.Identifier”, a kiedy tak jest, po prostu go usuwam.źródło
Najwyraźniej istnieją różne poziomy uwierzytelniania. Większość artykułów, które czytałem, mówi, aby ustawić MaxAllowedZone na „1”, co oznacza, że lokalna strefa komputera i strefa intranetu są dozwolone, ale „4” umożliwia dostęp do „wszystkich” stref.
Aby uzyskać więcej informacji, przeczytaj ten artykuł: https://support.microsoft.com/en-us/kb/892675
Tak wygląda mój rejestr (nie byłem pewien, czy zadziała z dzikimi kartami, ale wydaje się, że działa dla mnie):
Dodatkowo, co dziwne, klucz „UrlAllowList” był wymagany, aby to działało na innym komputerze, ale nie na moim testowym. Prawdopodobnie nie jest to wcale wymagane, ale kiedy je dodałem, rozwiązało problem. Użytkownik mógł nie zamknąć oryginalnego pliku lub coś w tym stylu. Więc tylko uwaga. Proponuję spróbować jak najmniej i przetestować, a następnie dodać w razie potrzeby. Po potwierdzeniu możesz w razie potrzeby wdrożyć. Powodzenia!
Edycja: PS Inną metodą, która działała, było mapowanie ścieżki do sieci lokalnie przy użyciu mklink / d (symboliczne łączenie w systemie Windows 7 lub nowszym), ale mapowanie litery dysku sieciowego (Z: do testowania) nie działało. Tylko do przemyślenia i nie musiałem „odblokowywać” żadnych plików. Również zaakceptowane „Rozwiązanie” nie rozwiązało problemu.
źródło