トップ回答者
パスワード16文字以上のwordファイルのopenにて2146824090が発生

質問
-
ファイルオープン(Microsoft.Office.Interop.Word.Documents.Open)をコールする際に
パスワード16文字以上のwordファイル(docx)を試したところ、COMExceptionが発生しました。
エラーコードは-2146824090です。
本現象について何か知っている方がいましたら、ご教授お願いします。
ちなみに、16文字未満のパスワード付きファイルのオープンはできています。
以下に似たようなスレッドを見つけましたが、同じ状況ということでしょうか。
<https://social.msdn.microsoft.com/Forums/ja-JP/790bfd82-815b-4da7-a22c-de01cd101bb9/word?forum=netfxgeneralja>
回答
-
原因は同じでしょうね。
Microsoft.Office.InteropはCOM経由で操作しているのでCOMに問題があれば影響を受けてしまいます。とりあえず
「Open XML SDK で、暗号化された(つまり読み取りパスワード付きの)Officeファイルを開くことはできますか?」
に書いた方法で、16文字以上のパスワードのかかったdocxを、パスワード解除した拡張子zipになったdocxに変換できることは確認できました。
一時フォルダなどに一度コピーして解除してから開くという処理にすれば開くことはできるでしょう。パスワードをつけて保存できるかまではテストできてません。
OfficeAgileText.exeのMainから呼んでるEncryptPackageに別のパスワードをつけたsessionや暗号化していないzipファイルを渡せば任意の保存ができることまでは確認できました。
ただし、wordで開くと改竄されているかもしれないという警告がでるので、不完全な暗号化処理なのかもしれません。
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
すべての返信
-
原因は同じでしょうね。
Microsoft.Office.InteropはCOM経由で操作しているのでCOMに問題があれば影響を受けてしまいます。とりあえず
「Open XML SDK で、暗号化された(つまり読み取りパスワード付きの)Officeファイルを開くことはできますか?」
に書いた方法で、16文字以上のパスワードのかかったdocxを、パスワード解除した拡張子zipになったdocxに変換できることは確認できました。
一時フォルダなどに一度コピーして解除してから開くという処理にすれば開くことはできるでしょう。パスワードをつけて保存できるかまではテストできてません。
OfficeAgileText.exeのMainから呼んでるEncryptPackageに別のパスワードをつけたsessionや暗号化していないzipファイルを渡せば任意の保存ができることまでは確認できました。
ただし、wordで開くと改竄されているかもしれないという警告がでるので、不完全な暗号化処理なのかもしれません。
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)