.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にアップグレードします。
ファイルの「ブロックを解除」すると、問題が修正されます。スクリーンショット:
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()もフォークを認識する必要があります。
Win 8 x64:
別のフォルダに移動するか、フォルダの名前を変更するだけです(私の場合:私のフォルダは「c#」でした)。フォルダ名に記号を使用しないでください。文字で名前を付けます。
終わり。
決定的な解決策は、InfoTechプロトコルがイントラネットゾーンで機能できるようにすることです。
レジストリに次の値を追加すると、問題が解決するはずです。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000001
開始に移動
タイプregsvr32 hhctrl.ocx
次のような成功メッセージが表示されます。
「hhctrl.ocxのDllRegisterServerが成功しました」
ここで、CHMファイルをもう一度開いてみてください。
別の方法は、別のサードパーティソフトウェアを使用することです。 このリンクは、chmファイルを表示するためのより多くのサードパーティソフトウェアを示しています...
SumatraPDFを試してみましたが、問題なく動作します。
C ++ Builderを使用して、ソフトウェアでこれをプログラムで修正しました。
CHMヘルプファイルを割り当てる前にApplication->HelpFile = HelpFileName
、「Zone.Identifier」ストリームが含まれているかどうかを確認し、含まれている場合は削除するだけです。
String ZIStream(HelpFileName + ":Zone.Identifier") ;
if (FileExists(ZIStream))
{ DeleteFile(ZIStream) ; }
明らかに異なるレベルの認証があります。私が読んだほとんどの記事では、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:テスト用)のマッピングは機能しませんでした。考えてみれば、ファイルの「ブロックを解除」する必要はありませんでした。また、受け入れられた「解決策」は私にとって問題を解決しませんでした。
ローカルフォルダに移動するのが最も簡単な解決策です。特に、システムの管理者ではなかったため(登録を編集できないなど)、他に何も機能しませんでした。これは、作業環境での一般的なケースです。
Create a folder in C:\help drive, lets call it help and copy the files there and open.
mydocumentsやその他の場所にコピーしないでください。これらの場所は通常、オフィスセットアップのネットワークドライブ上にあり、機能しません。