CHMファイルを開くと、次のようになります。'Webページへのナビゲーションがキャンセルされました '



Opening Chm File Produces



解決:

概要

Microsoft Security Updates 896358および840315は、ネットワークドライブ(またはUNCパス)から開いたときにCHMファイルの内容の表示をブロックします。これは、ウイルス/マルウェアに対する攻撃ベクトルがコンピューターに感染するのを阻止するWindowsの試みであり、このchmファイルが使用する「InfoTech」プロトコルを介してデータを描画する.chmファイルをブロックしました。



問題のMicrosoftの要約:http://support.microsoft.com/kb/896054

ソリューション



  1. Windows Server 2008、Windows 7を使用している場合、Windowsはクイックフィックスを作成しました。 chmファイルを右クリックすると、[yourfile.chmプロパティ]ダイアログボックスが表示され、下部に[ブロック解除]というボタンが表示されます。 [ブロックを解除]をクリックして[OK]を押し、 もう一度chmファイルを開こうとすると、正しく機能します。このオプションは、WindowsXP(SP3)より前の以前のバージョンのWindowsでは使用できません。

  2. chmファイルをネットワークドライブから移動して問題を解決します。ネットワークドライブを使用していることに気付いていない可能性があります。今すぐ再確認してください。.chmファイルを右クリックし、プロパティをクリックして、[場所]フィールドを確認します。次のような2つの円記号で始まる場合:\ epicserver blah の場合、ネットワークドライブを使用しています。 したがって、修正するには、chmファイルをコピーして、C:やE:などのローカルドライブに貼り付けます。 次に、chmファイルを再度開いてみてください。Windowsが異常終了することはありません。



  3. 最後の手段として、ネットワークドライブからファイルをコピー/移動できない場合。それが置かれている場所でそれを開く必要があり、XP、Vista、MEなどのより少ないバージョンのウィンドウを使用している場合は、 この.chmファイルをめちゃくちゃにしないようにWindowsに手動で指示します。 HHReg(HTMLヘルプ登録ユーティリティ)ユーティリティは、このタスクを自動化します。 基本的に、HHRegユーティリティをダウンロードし、.chmファイルをロードして、[OK]を押すと、Windowsにブロックしないように指示するために必要なレジストリキーが作成されます。詳細については、http://www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/をご覧ください。

Windows 8または10? -> WindowsXPにアップグレードします。


ファイルを「ブロック解除」すると、問題が修正されます。スクリーンショット:

ここに画像の説明を入力してください


Eric Leschinskiの回答に加えて、これはスタックオーバーフローであるため、プログラムによる解決策は次のとおりです。

Windowsは、隠しファイルフォークを使用して、コンテンツを「ダウンロード済み」としてマークします。これらを切り捨てると、ファイルのブロックが解除されます。 CHMに使用されるストリームの名前は「Zone.Identifier」です。ファイルを開くときに:streamnameを追加することで、ストリームにアクセスできます。 (RTLがそれを台無しにした場合に備えて、最初はバックアップを保持してください!)

Delphiでは、次のようになります。

var f:ファイル; writeln( 'unblocking'、s);を開始します。 assignfile(f、 'some.chm:Zone.Identifier'); rewrite(f、1); truncate(f); closefile(f);終わり;

フォークされていないファイルシステム(FAT32など)には隠しファイルがあると言われていますが、まだその根底にあるものではありません。

P.s. DelphiのDeleteFile()もフォークを認識する必要があります。