Windows 10 Anniversary Update適用後にVB .NETで組まれたプログラムの動作が不安定になったら

Windows 10 Anniversary Update (バージョン 1607 ビルド 14393)を適用後、それまで動いていたVB .NETで作られたアプリケーションの動作が不安定になる現象が発生しています。

今までに確認した発生タイミングは「VB .NETからExcelを使用するとき」で、ワークブックを開くときであったり、ワークブックを保存するときであったり、PDF書き出しをするときであったりとまちまちです。
また、インストールの状況によって動作が変わったりもするようです。(Officeの再インストール後にエラーが発生するタイミングが変わったことで確認しています。)

ログを確認すると、以下のようなメッセージが記録されています。

リモート プロシージャ コールに失敗しました。 (HRESULT からの例外:0x800706BE)
System.Runtime.InteropServices.COMException (0x800706BE): リモート プロシージャ コールに失敗しました。 (HRESULT からの例外:0x800706BE)

RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA)
System.Runtime.InteropServices.COMException (0x800706BA): RPC サーバーを利用できません。 (HRESULT からの例外:0x800706BA)

この問題について、マイクロソフトのコミュニティの『Windows 10 Anniversary Update 適用後、VBからのExcel出力ができなくなった。【Ver1607】』というトピックで同様の事例報告と解決方法がやり取りされていることを見つけました。

トピック中で紹介されていた方法に従い、Windows 10の設定画面から「Windowsで通常使うプリンターを管理する」という項目をオフにすると現象が発生しなくなりました。

Windows 10の設定で「Windowsで通常使うプリンターを管理する」をオフにする

※追記
2016/09/05の時点では、「Windowsで通常使うプリンターを管理する」の設定を行うにはWindows 10の設定画面、またはレジストリの操作を行う必要があります。
VB .NETのプログラム上で、このレジストリ設定値の取得と設定が簡単にできるようモジュールを作成しました。

ソースのダウンロード: LegacyDefaultPrinterMode.zip
(動作確認はVisual Studio 2015 Update 3で行いました。)

使用例

' This software is distributed under the license of NYSL.
' ( http://www.kmonos.net/nysl/ )

Public Module ExampleModule

  Sub Example

    ' 「Windowsで通常使うプリンターを管理する」の設定値を取得する
    Dim mode = GetLegacyDefaultPrinterMode()
    Debug.Print("現在の設定値:" & mode)

   ' 「Windowsで通常使うプリンターを管理する」がオフにする
   SetLegacyDefaultPrinterMode(MODE_OFF)
    
  End
End Module

makoto について

デジタルガジェット大好き!! 小さい機械を片手に、JavaとFlex、PHPなど、いろいろなプログラミング言語・環境を行ったり来たりしながらプログラムを書いています。 最近お気に入りな環境は、Visual StudioとFileMaker。
カテゴリー: Windows, 技術的なメモ タグ: , , パーマリンク

Windows 10 Anniversary Update適用後にVB .NETで組まれたプログラムの動作が不安定になったら への1件のフィードバック

  1. Jacalyn のコメント:

    Me dull. You smart. That’s just what I nedeed.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です