none
OpenFileDialogが異常終了してしまう RRS feed

  • 質問

  •  OpenFileDialogからファイルを選択して処理するアプリケーションを作成中ですが、初期表示フォルダを「デスクトップ」、フィルタを全てのファイル(*.*)にした場合、ダイアログを開いた表示した直後にアプリケーションが終了してしまいます。

     初期表示フォルダ、フィルタを他の値に設定した場合、ダイアログは正常表示されるのですが、画面から操作を行い表示フォルダを「デスクトップ」、ファイル名に*.*を入力するとやはりアプリケーションが終了してしまいます。

    他の処理部分に問題があるのかと思い、ダイアログ表示部分のみを抽出してみたのですが、同じ結果となってしまいました。(文末に実行コード)

    この現象は、デバッグモードでは発生せず、発行したアプリケーションをインストールした場合のみ発生します。

    何か設定漏れなどは考えられるでしょうか? 回避策をご教示願います。

    開発、実行環境は以下の通りです。
    Windows XP Pro バージョン 5.1.2600 Service Pack 3 ビルド 2600
    Microsoft Visual Studio 2008 Version 9.0.30729.1 SP
    Microsoft .NET Framework Version 3.5 SP1
    Microsoft Visual Basic 2008   91908-152-0000043-60354

    実行コードは以下の通りです。
    新しいプロジェクトを開き、Formにボタンを1つ配置、後は下記の通りクリックイベントにコードを記述しただけで、他は何もしていません。

    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim openFileDialog1 As New OpenFileDialog()     ' オープンダイアログ
            Dim pstrInitialPath As String = Nothing
            '
            '-- チェック対象ファイルの選択
            '
            ' 初期表示パス設定(初回選択時のみ)
            If pstrInitialPath Is Nothing Then
                pstrInitialPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
            End If

            ' ダイアログ設定
            openFileDialog1.InitialDirectory = pstrInitialPath
            openFileDialog1.Filter = "Text File(*.txt)|*.txt|Data File(*.dat)|*.dat|All Files(*.*)|*.*"
            openFileDialog1.FilterIndex = 3
            openFileDialog1.RestoreDirectory = False

            '
            '-- ファイルが選択されなかった場合はExit
            Try
                If openFileDialog1.ShowDialog() <> DialogResult.OK Then
                    ' リソースの開放
                    openFileDialog1 = Nothing
                    Exit Sub
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try

        End Sub
    End Class

    2009年7月24日 0:22

回答

  • デスクトップにいるファイル、あるいはアイコンが悪さをしているんじゃないでしょうか?
    起きるPCと起きないPCの差を探してみて下さい。

    有名なソフトの例で行くと、ウィルスバスターにそういった機能が搭載されているという話を聞いたことがあります。
    http://hide.maruo.co.jp/news/news20090717.html (秀まるおさんのホームページ)
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク どらき 2009年7月27日 0:53
    2009年7月24日 14:08
    モデレータ
  • Azuleanさんありがとうございました、解決しました。
    ご指摘の通りウィルスバスター2009が悪さしていました。

    デスクトップを参照する際、ショートカットアイコンを表示するためにウィルスバスターのプログラムにアクセスすると
    「不審な挙動」として検知され、強制終了させられていました。

    ・ウィルスバスターのショートカットアイコンを削除する。
    ・ウィルスバスターショートカットのアイコンをウィルスバスター以外から取得するように変更する。
    ・Azuleanさんに教えていただいた、(秀まるおさんのホームページ)に記載されているように設定を変更する。

    上記にいづれかで回避することができました。
    • 回答としてマーク どらき 2009年7月27日 0:54
    2009年7月27日 0:53

すべての返信

  • 異常終了の際にどのようなメッセージが出ているのでしょうか?

    #とりあえず私の環境では再現しませんでした。

    Windows Visata Ultimate ビルド 6001: Service Pack 1

    Microsoft Visual Studio 2008
    Version 9.0.30729.1 SP

    Microsoft .NET Framework
    Version 3.5 SP1

    インストールされている Edition: Enterprise
    Microsoft Visual Basic 2008   92030-270-6012766-60609


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年7月24日 3:06
    モデレータ
  • メッセージなどは一切でません。
    Try~Catchで囲んだ場合、囲まない場合共に、ダイアログを一瞬表示した後に終了してしまいます。
    イベントビューアにも何も出ていませんでした。

    2009年7月24日 5:21
  • デスクトップにいるファイル、あるいはアイコンが悪さをしているんじゃないでしょうか?
    起きるPCと起きないPCの差を探してみて下さい。

    有名なソフトの例で行くと、ウィルスバスターにそういった機能が搭載されているという話を聞いたことがあります。
    http://hide.maruo.co.jp/news/news20090717.html (秀まるおさんのホームページ)
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマーク どらき 2009年7月27日 0:53
    2009年7月24日 14:08
    モデレータ
  • 確かに! 異常終了してしまうPCには、ウィルスバスター2009がインストールされていました。
    週末は現象が発生しているPCを触ることができないので、週明けに確認してみます。

    2009年7月24日 16:08
  • Azuleanさんありがとうございました、解決しました。
    ご指摘の通りウィルスバスター2009が悪さしていました。

    デスクトップを参照する際、ショートカットアイコンを表示するためにウィルスバスターのプログラムにアクセスすると
    「不審な挙動」として検知され、強制終了させられていました。

    ・ウィルスバスターのショートカットアイコンを削除する。
    ・ウィルスバスターショートカットのアイコンをウィルスバスター以外から取得するように変更する。
    ・Azuleanさんに教えていただいた、(秀まるおさんのホームページ)に記載されているように設定を変更する。

    上記にいづれかで回避することができました。
    • 回答としてマーク どらき 2009年7月27日 0:54
    2009年7月27日 0:53