ActiveXObjectを利用してJavaScriptでのファイル出力


このご時世にまだそんなことしているんだと突っ込まれそうですが、
IE8(互換モード)でJavaScriptからファイル出力をする必要がありそこでめちゃくちゃ嵌ってしまったので備忘録を兼ねて記事書きます。

ActiveXObjectを利用してファイル出力できますというのは色々な方が記載されていますが、いちお記載すると以下の感じ。

sample1.js
var fso = new ActiveXObject('Scripting.FileSystemObject');
// fileName,addTextは適宜設定
var output = fso.createTextFile(fileName, true, false);
output.Write(addText);
output.close();

またActiveXを利用するために、
IEの設定でインターネットオプション→セキュリティタグ→レベルのカスタマイズから
「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」のラジオボタンを有効に設定。
ここが有効になっていないと「オートメ―ションサーバはオブジェクトを作成できません」のエラーがでます。

ここまでは良かったのですが、上記の通り記載してもファイル作成ができず、
「ファイルが見つかりません。」のエラーメッセージがでました。
エラーメッセージで検索かけても全くヒットせず、解決策が全く見つからなかったのですが、
同じことをやってファイル出力が上手くいっている人がいたので環境の差分チェックしたら、
保護モードがオンになっていることが不具合の原因でした。

保護モードのチェックを外して同じことを実行したら無事にファイル出力できました。