.chmファイルを開こうとしています。
ソースをダウンロードして抽出し、ダブルクリックしてWaffle.chm
[開く]をクリックしましたが、chmファイルのどの要素をクリックしても、次のメッセージが表示されます。
Navigation to the webpage was canceled.
What you can try:
Retype the address.
何が起きてる?
.chmファイルを開こうとしています。
ソースをダウンロードして抽出し、ダブルクリックしてWaffle.chm
[開く]をクリックしましたが、chmファイルのどの要素をクリックしても、次のメッセージが表示されます。
Navigation to the webpage was canceled.
What you can try:
Retype the address.
何が起きてる?
回答:
概要
Microsoft Security Updates 896358および840315は、ネットワークドライブ(またはUNCパス)から開いたときにCHMファイルの内容の表示をブロックします。これは、ウイルス/マルウェアに対する攻撃ベクトルがコンピューターに感染するのを阻止するWindowsの試みであり、このchmファイルが使用する「InfoTech」プロトコルを介してデータを描画する.chmファイルをブロックしました。
問題のMicrosoftの要約:http: //support.microsoft.com/kb/896054
ソリューション
Windows Server 2008、Windows 7を使用している場合、Windowsはクイックフィックスを作成しました。 chmファイルを右クリックすると、[yourfile.chmプロパティ]ダイアログボックスが表示され、下部に[ブロック解除]というボタンが表示されます。[ブロックを解除]をクリックして[OK]を押し、chmファイルをもう一度開こうとすると正しく機能します。このオプションは、WindowsXP(SP3)より前の以前のバージョンのWindowsでは使用できません。
chmファイルをネットワークドライブから移動して問題を解決します。ネットワークドライブを使用していることに気付いていない可能性があります。今すぐ再確認してください。.chmファイルを右クリックし、プロパティをクリックして、[場所]フィールドを確認します。次のような2つの円記号で始まる\\epicserver\blah\
場合は、ネットワークドライブを使用しています。 したがって、修正するには、chmファイルをコピーして、C:\やE:などのローカルドライブに貼り付けます。 次に、chmファイルを再度開いてみてください。Windowsが異常終了することはありません。
最後の手段として、ネットワークドライブからファイルをコピー/移動できない場合。それが置かれている場所で開く必要があり、XP、Vista、MEなどのより古いバージョンのWindowsを使用している場合は、この.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にアップグレードします。
ファイルを「ブロック解除」すると、問題が修正されます。スクリーンショット:
Win 8 x64:
別のフォルダに移動するか、フォルダの名前を変更するだけです(私の場合:私のフォルダは「c#」でした)。フォルダ名に記号を使用しないでください。文字で名前を付けます。
完了しました。
Eric Leschinskiの回答に加えて、これはスタックオーバーフローであるため、プログラムによる解決策は次のとおりです。
Windowsは、隠しファイルフォークを使用して、コンテンツを「ダウンロード済み」としてマークします。これらを切り捨てると、ファイルのブロックが解除されます。CHMに使用されるストリームの名前は「Zone.Identifier」です。ファイルを開くときに:streamnameを追加することで、ストリームにアクセスできます。(RTLがそれを台無しにした場合に備えて、最初はバックアップを保持してください!)
Delphiでは、次のようになります。
var f : file;
begin
writeln('unblocking ',s);
assignfile(f,'some.chm:Zone.Identifier');
rewrite(f,1);
truncate(f);
closefile(f);
end;
フォークされていないファイルシステム(FAT32など)には隠しファイルがあると言われていますが、まだその根底に到達していません。
Ps DelphiのDeleteFile()もフォークを認識する必要があります。
決定的な解決策は、InfoTechプロトコルがイントラネットゾーンで機能できるようにすることです。
レジストリに次の値を追加すると、問題が解決するはずです。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000001
スタートに移動
タイプ regsvr32 hhctrl.ocx
次のような成功メッセージが表示されます。
「hhctrl.ocxのDllRegisterServerが成功しました」
ここで、CHMファイルをもう一度開いてみてください。
別の方法は、別のサードパーティソフトウェアを使用することです。 このリンクは、chmファイルを表示するためのより多くのサードパーティソフトウェアを示しています...
SumatraPDFを試してみましたが、問題なく動作します。
明らかに異なるレベルの認証があります。私が読んだほとんどの記事では、MaxAllowedZoneを「1」に設定するように指示されています。これは、ローカルマシンゾーンとイントラネットゾーンは許可されますが、「4」は「すべて」のゾーンへのアクセスを許可することを意味します。
詳細については、次の記事を参照してください:https: //support.microsoft.com/en-us/kb/892675
これが私のレジストリの外観です(ワイルドカードで機能するかどうかはわかりませんでしたが、私にとっては機能するようです):
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://*;"
補足として、奇妙なことに、これを別のPCで機能させるには「UrlAllowList」キーが必要でしたが、私のテストでは必要ありませんでした。おそらくまったく必要ありませんが、追加すると問題が解決しました。ユーザーが元のファイルなどを閉じていない可能性があります。したがって、単なる考慮事項です。最小限の試行とテストを行い、必要に応じて追加することをお勧めします。確認したら、必要に応じてデプロイできます。幸運を!
編集: PS機能した別の方法は、mklink / d(Windows 7以降のシンボリックリンク)を使用してローカルでネットワークへのパスをマッピングすることでしたが、ネットワークドライブ文字(Z:テスト用)のマッピングは機能しませんでした。ただ考えるための食べ物であり、ファイルの「ブロックを解除」する必要はありませんでした。また、受け入れられた「解決策」は私にとって問題を解決しませんでした。