Otwarcie pliku CHM powoduje: „nawigacja do strony internetowej została anulowana”


84

Próbuję otworzyć plik .chm.

Ściągnąłem źródło, rozpakowałem je, dwukrotnie kliknąłem Waffle.chmi 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.  

wprowadź opis obrazu tutaj

Co tu się dzieje?

Odpowiedzi:


168

Podsumowanie

Aktualizacje zabezpieczeń firmy Microsoft 896358 i 840315 blokują wyświetlanie zawartości pliku CHM po otwarciu z dysku sieciowego (lub ścieżki UNC ). Jest to próba systemu Windows, aby powstrzymać wektory ataku wirusów / złośliwego oprogramowania przed zainfekowaniem komputera i zablokować plik .chm, który pobiera dane za pośrednictwem protokołu „InfoTech”, z którego korzysta ten plik chm.

Streszczenie problemu firmy Microsoft: http://support.microsoft.com/kb/896054

Rozwiązania

  1. Jeśli używasz systemu Windows Server 2008, Windows 7, system Windows utworzył szybką poprawkę. Kliknij prawym przyciskiem myszy plik chm, a pojawi się okno dialogowe „yourfile.chm Properties”, u dołu, przycisk „Unblock”. Kliknij Odblokuj i naciśnij OK i spróbuj ponownie otworzyć plik chm, działa poprawnie. Ta opcja nie jest dostępna we wcześniejszych wersjach systemu Windows przed WindowsXP (SP3).

  2. Rozwiąż problem, przenosząc plik chm z dysku sieciowego. Możesz nie wiedzieć, że używasz dysku sieciowego, sprawdź teraz dokładnie: Kliknij prawym przyciskiem myszy plik .chm, kliknij właściwości i spójrz na pole „lokalizacja”. Jeśli zaczyna się od dwóch odwrotnych ukośników, takich jak ten:, oznacza to \\epicserver\blah\, że używasz dysku sieciowego. Aby to naprawić, skopiuj plik chm i wklej go na dysk lokalny, na przykład C: \ lub E :. Następnie spróbuj ponownie otworzyć plik chm, system Windows nie przeraża.

  3. Ostatnia deska ratunku, jeśli nie możesz skopiować / przenieść pliku z dysku sieciowego. Jeśli musisz otworzyć go w miejscu, w którym się znajduje, i używasz pomniejszych wersji systemu Windows, takich jak XP, Vista, ME lub inne, będziesz musiał ręcznie powiedzieć systemowi Windows, aby nie bał się tego pliku .chm. Narzędzie HHReg (narzędzie do rejestracji pomocy HTML) automatyzuje to zadanie. Zasadniczo pobierasz narzędzie HHReg, ładujesz plik .chm, naciskasz OK, a utworzy ono niezbędne klucze rejestru, aby system Windows nie blokował go. Więcej informacji: http://www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/

Windows 8 czy 10? -> Uaktualnij do Windows XP.


3
Nie widzę przycisku „Odblokuj” ani w WinXP SP3 ani w WinVista Home Premium
GetFree

Rozwiązanie 1 nie jest dostępne w systemie Windows 8, czy jest jakiś łatwy sposób na Win8?
countunique

2
Żadne z proponowanych rozwiązań nie pasuje do 4 możliwych rozwiązań podanych w przywoływanym artykule KB. Ustawienie „MaxAllowedZone” na „1” rozwiązało problem za mnie
przerwa

UNBLOCK nie pomaga, musisz otworzyć, skopiować plik na dysk lokalny i otworzyć go z (niesieciowego) dysku lokalnego.
Erdinc Ay

1
Ten problem dotyczy również chmury pobranej z Internetu. Przycisk / pole wyboru odblokowania może nie być dostępne zaraz po pobraniu. Z mojego doświadczenia wynika, że ​​wymaga to najpierw otwarcia chm z lokalnego systemu plików, zobaczenia jego zniszczenia, zamknięcia go, a następnie przejścia do właściwości pliku, aby go odblokować.
Frédéric

43

„odblokowanie” pliku rozwiązuje problem. Zrzut ekranu:

wprowadź opis obrazu tutaj


Zapomniałem, bo dawno nie korzystałem z tej sztuczki, dzięki za ponowne przypomnienie.
kta

@kaziTanvirAhsan cieszę się, że mogłem pomóc.
colemik

Przeniesienie się z lokalizacji sieciowej na lokalną nie wystarczy - musisz odblokować jak na tym zrzucie ekranu. Dzięki @trismarck
leinad13

To zadziałało! Dzięki. Nigdy bym się nie zorientował sam.
NilsB,

nie mogłem znaleźć takiej opcji z win-7. zamiast otwierać plik / w, skopiowałem na mój komputer lokalny i działa.
tsenapathy

11

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.


To też działa. Mój plik .chm znajdował się w tym folderze C: \ C # \ Samples, a następnie przeniosłem go do C: \ temp i bum! To działa! Dzięki za to. :)
klaydze

Świetny! Jestem użytkownikiem systemu Windows 10: musiałem usunąć znak „#” zarówno z nazwy pliku, jak i nazwy folderu ze starego pliku pomocy c # chm.
Marcelo Bergweiler

11

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:

var f : file;
begin
 writeln('unblocking ',s);
 assignfile(f,'some.chm:Zone.Identifier');
 rewrite(f,1);
 truncate(f);
 closefile(f);
end;

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.


Bardzo ciekawa odpowiedź. Gdzie mogę znaleźć więcej informacji na temat tego ukrytego rozwidlenia plików?
ViRuSTriNiTy

MSDN. Na przykład sb zauważył, że deletefile również działa, a ja przyjrzałem się odpowiedniemu wywołaniu w MSDN i dokładnie udokumentowano, jak zachowuje się funkcja. Określony bit Zone.Identifier, który otrzymałem z internetu. Działa również np. W przypadku zablokowanych plików EXE, jeśli masz wysokie ustawienia zabezpieczeń dla MSIE
Marco van de Voort

6

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:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000001

Więcej informacji tutaj: http://support.microsoft.com/kb/896054


4

Idź do Start

Rodzaj regsvr32 hhctrl.ocx

Powinieneś otrzymać wiadomość o powodzeniu, taką jak:

„DllRegisterServer in hhctrl.ocx powiodło się”

Teraz spróbuj ponownie otworzyć plik CHM.


1
Voww ... to działa dla mnie ... (kliknij prawym przyciskiem myszy, właściwości nie pokazały przycisku "odblokuj". Ale to działa dobrze)
tsenapathy

3

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.


2

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.

String ZIStream(HelpFileName + ":Zone.Identifier") ;

if (FileExists(ZIStream))
    { DeleteFile(ZIStream) ; }

1

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):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000004

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"UrlAllowList"="\\\\<network_path_root>;\\\\<network_path_root>\*;\\ies-inc.local;http://www.*;http://*;https://www.*;https://*;"

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.


Nie ma problemu, cieszę się, że ktoś skorzystał. Najlepsza!
jacktrader
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.