質問: ### 前提・実現したいこと IE11で表示したHTMLのページからSetup.msiをダウンロードさせたいです。 ### 発生している問題・エラーメッセージ ダウンロードさせるアンカーを配置して、ダウンロード開始されましたが、 Setup.msiがSetup_msiでダウンロードされてしまいます。 Setup.msiにリネームすれば動作しますが、 一手間増えてしまうので、できればSetup.msiでダウロードさせたいです。 ### 該当のソースコード ``` Setupダウンロード ``` 単純にファイル名を指定しているだけのアンカーになります。 ### 試したこと ブラウザの設定について、幾つかのサイトで指摘されている内容を確認しましたが、 どれも解決に至りませんでした。 * インターネットオプション→セキュリティタブ→保護モードを有効にするのチェックをはずす * インターネットオプション→詳細設定タブ→セキュリティ→暗号化されたページをディスクに保存しないのチェックをはずす ### 補足情報(言語/FW/ツール等のバージョンなど) Chromeでは発生していません。 OSはWindows7で発生しています。
回答: 私も同じ問題に遭遇しました... 対処は、 * Windows を再起動 * `PcaSvc (Program Compatibility Assistant Service)` サービスをホストしている `svchost.exe` を強制終了する。 この問題は 拡張子exeのファイルをダウンロードすると、拡張子の前のピリオドがアンダーバーとなってしまう の `回答` にあるような Windows 7 の不具合のひとつ (現在は修正済み) のようです。 何がこの問題を引き起すのか興味があり色々調査していました。 * 結論的には Windows 7 SP1 または Windows Server 2008 R2 の SP1 の Internet Explorer を使用してファイルをダウンロードしようとすると、エラー メッセージ で説明がある `ハンドルのリーク` によるもの。 * 何のハンドルかというと、`C:\Users\USERNAME\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\9I1B2791` のような一時フォルダーのファイルハンドルです。 * Process Monitor を使用してファイルアクセスを追跡した所、`9I1B2791` フォルダーへのアクセスが `DELETE PENDING` エラーで失敗する事を確認しました。この現象が `.` を `_` にしてしまう要因です。 * 余談ですが Windows でファイルハンドルを取得する際の共有フラグには `FILE_SHARE_READ` `FILE_SHARE_WRITE` `FILE_SHARE_DELETE` の 3 つがあり、今回は `FILE_SHARE_DELETE` の問題です。 * 消えないファイルの話 の説明が非常に詳しいです。 * ハンドルリークが iexplore.exe で発生するのではなく、svchost.exe で発生しています。 * リークの事象 (またはハンドルを開いているという事象) は Handle コマンドで発生を確認できます。 * svchost.exe は沢山起動しています。`tasklist /svc` コマンドで、svchost.exe と関連しているサービスの確認ができます。 * 2885210 の修正対象のファイルリストに `Pcaui.dll` があり、PcaSvc との関連性を疑いました。 * 当該の `svchost.exe` を強制終了するとハンドルのリークが解消するので、ダウンロードのファイル名で `.` が `_` となる問題は解消します。 * 回避に関する考察は以上ですが、根治するには Windows Update をやり尽くす (または PcaSvc を無効化する) しかなさそうです。