ASP.NETでローカルにファイルを自動保存して開かせたい!?新年早々書くような内容の話ではないが、ちょっと調べたので載せておきます。書くような内容ではないんですけど、、久々のニッチな.NETネタです。アクセスが絶えません。何かしら皆さんお困りのようです。今回はそれとは直接関係ありませんが、多少有益な情報も含まれています。ま、実際自分がやってみて困ったからともいいますが・・・ってことで、はじまり。タイトルを見ていただければわかると思いますが、何をやりたいのかはあまり伝わらないかもしれません。やりたいことは、Webアプリケーションでサーバサイドで生成したファイルをクライアントのローカルフォルダに保存するという話。ちなみに、自動保存はとダイアログも表示せずに保存処理を行うことをさしています。何でそんなことせにゃならんの?と思うことでしょう。私もそう思います・・・。いうことをどうしてもやりたいというお客様もいらっしゃるということで、こういうことを実現することがワシらの仕事でもあるので仕方がないことかと。ブラウザを介するWebアプリケーションはセキュリティ上、ローカルリソースへのアクセスは出来ないようになっています(これが出来ちゃうと何でもできてしまうので)。ま、これが出来てしまうのはいわゆるブラウザのセキュリティホールということになります。Clientを導入するとかいう話がありましたが、あれってどうなったんですかね?)この壁をぶち破るためには、Microsoftの悪しき資産(今となっては)であるActiveXを利用することになります。実際に試したことがなかったので本当にできるのか?という好奇心もあり調べてみました。(ま、今更ですけどね・・・)[ゴール]サーバで生成したファイルをローカルにこっそり保存する。追加で、保存後にサーバ上の特定のファイルを開く。サーバ上のTemp領域に保存し、そのファイルをActiveXにてユーザのローカルに保存します。その前に、ここに至るまでに他に考えた手段について以下に簡単に書いておきます。[案1:ActiveXオブジェクトの「FileSyetemObject」を使ってどうにかできないか?]JavaScriptでFileSystemObjectをCreateObjectで生成して、FileCopyメソッドでできれば簡単に出来るのではないか!?とまず考えました。FileSystemObjectは現状のIEではセキュリティが厳しくなり、デフォルトでは使えなくなっています。使えるようにするためにはレジストリを変更する必要があり、セキュリティ上かなり問題があるため、あきらめました。下記のKBにあるレジストリを削除すれば使えるようにすることは出来ると思います。