DOBON.NETプログラミング道掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■33973 / inTopicNo.1)  Process.StartでPDFファイルが開かない(Windows10)
  
□投稿者/ h-sake 一般人(3回)-(2018/09/13(Thu) 15:17:10)
  • アイコン環境/言語:[Windows10 64bit vb.net] 
    分類:[.NET] 

    VS2012で作成したプログラムをVS2017に移行しています。

    ↓下記のようにPDFファイルを起動している処理がWindows10のパソコンだとうまく動作せず困っています。
    System.Diagnostics.Process.Start("c:\1.pdf")
    特にエラーも出ずにプロセスが残ったままになります。
    ※Windows10は1803適用済みの環境です。


    全く同じロジックでVS2012で作成アプリは問題なく動作します。
    フレームワークのバージョンを変えても影響はありませんでした。


    他に色々と試した結果について
    @PDFファイル(.pdf)の関連付けをしているアプリケーションについて
     ×:Acrobat Reader DC
     ○:上記以外
     
     Acrobat Reader以外に設定すると問題なく動作します。

    AWindows7(64bit)で試した結果、問題なく動作します。

    BAcrobat Reader DCの保護モードを無効にするとWindows10でも動作しました。
     Acrobat Readerの
     編集 → 環境設定 で
     セキュリティ(拡張) → 起動時に保護モードを有効にする チェックを外す

    一応@やBの対応でWindows10でも動作するようにできますが、
    プログラム側の対応でWindows10でも動作するようにしたいと考えています。

    何か情報をお持ちの方、回答をよろしくお願いします。




マルチポストを報告
違反を報告
引用返信 削除キー/
■33974 / inTopicNo.2)  Re[1]: Process.StartでPDFファイルが開かない(Windows10)
□投稿者/ 魔界の仮面弁士 大御所(1143回)-(2018/09/14(Fri) 11:10:34)
  • アイコンNo33973に返信(h-sakeさんの記事)
    > System.Diagnostics.Process.Start("c:\1.pdf")
    > 特にエラーも出ずにプロセスが残ったままになります。
    > ※Windows10は1803適用済みの環境です。

    http://www.kobu.com/docs/pdf/pdfxhand.htm
    上記の「手書きサンプル」pdf を配置して試してみましたが
    当方では再現できませんでした。(x86/x64/AnyCPU)


    検証手順を絞り込むため、幾つか確認させてください。

    ================================================================
    (1) x64ビルド、x86 ビルドの場合とで、結果は変わりますか?

    当方では、x86/x64/AnyCPU/AnyCPU32BitPreferred のいずれでも
    今回の現象を確認できていません。

    ================================================================
    (2) その pdf に、代替データストリームは付与されていますか?

    たとえば、コマンドプロンプトから
    CD /D C:\
    DIR /R
    と実行した場合、『1.pdf』の下に
    『1.pdf:Zone.Identifier』または
    『1.pdf:Zone.Identifier:何某』が表示されますか?

    ================================================================
    (3) C:\ のルートフォルダ以外に置かれた pdf でも、同じ現象になりますか?

    ユーザー別デスクトップやドキュメントフォルダに置いたファイルでも
    同様の現象になるのか確認してみてください。

    C:\ のルートはシステムフォルダー扱いの権限になっていることが
    多いので、念のための確認です。
    (フォルダーの作成はできるが、ファイルの作成や編集は
    管理者にしかできないようになっているなど)

    ================================================================
    (4) UAC 仮想化は有効化されていますか? それとも無効化状態ですか?

    OS としての UAC は On だと思いますが、アプリ側の設定はどうでしょうか。

    最近のアプリでは、requestedExecutionLevel が指定されていると
    思いますが、古いプロジェクトからコンバートしてきたような場合、
    VB製に requestedExecutionLevel が指定されていないかもしれません。

    このような場合、「管理者として実行」していない場合に、
    VB 側のみが UAC 仮想化が有効な状態となってしまう可能性があります。

    どちらも有効化、またはどちらも無効化なら問題は少ないのですが、
    両者で異なっていると、VB 側と関連付け起動されたアプリ側とで
    パスおよびそのファイルのアクセス権の解釈がぶれることになります。

    たとえば、VB のみ有効化されているケースで考えてみると、
    『System.Diagnostics.Process.Start("c:\1.pdf")』による起動時には、
    仮想化された C:\Users\ユーザー名\AppData\Local\VirtualStore\1.pdf が
    C:\1.pdf よりも優先して検索されてしまうことになります。
    (PDF Reader 側では C:\1.pdf を参照しようとする)

    ================================================================
違反を報告
引用返信 削除キー/
■33975 / inTopicNo.3)  Re[2]: Process.StartでPDFファイルが開かない(Windows10)
□投稿者/ h-sake 一般人(5回)-(2018/09/14(Fri) 14:54:11)
  • アイコンNo33974に返信(魔界の仮面弁士さんの記事)
    魔界の仮面弁士さんご回答ありがとうございます。

    (1)〜(3)まで試して特に問題ありませんでした。

    > ================================================================
    > (4) UAC 仮想化は有効化されていますか? それとも無効化状態ですか?
    >
    > OS としての UAC は On だと思いますが、アプリ側の設定はどうでしょうか。
    >
    > 最近のアプリでは、requestedExecutionLevel が指定されていると
    > 思いますが、古いプロジェクトからコンバートしてきたような場合、
    > VB製に requestedExecutionLevel が指定されていないかもしれません。
    >
    > このような場合、「管理者として実行」していない場合に、
    > VB 側のみが UAC 仮想化が有効な状態となってしまう可能性があります。
    >
    > どちらも有効化、またはどちらも無効化なら問題は少ないのですが、
    > 両者で異なっていると、VB 側と関連付け起動されたアプリ側とで
    > パスおよびそのファイルのアクセス権の解釈がぶれることになります。
    >
    > たとえば、VB のみ有効化されているケースで考えてみると、
    > 『System.Diagnostics.Process.Start("c:\1.pdf")』による起動時には、
    > 仮想化された C:\Users\ユーザー名\AppData\Local\VirtualStore\1.pdf が
    > C:\1.pdf よりも優先して検索されてしまうことになります。
    > (PDF Reader 側では C:\1.pdf を参照しようとする)
    >
    > ================================================================

    ご指摘の通り上記の(4)が原因でした。
    現象がでる古いプログラムには「requestedExecutionLevel」に「requireAdministrator」が設定されていました。

    また、デバック時には「管理者として実行」で確認しており、現象が発生していました。
    デバック時でも「管理者として実行」ではなく通常の起動で確認するとPDFファイルが表示されました。

    「requestedExecutionLevel」を「asInvoker」に設定して問題なく動作しました。
    本当にありがとうございました。


    ただ「requireAdministrator」に設定した理由が思い出せません。
    何か理由があったように記憶しています…コメント付けとけばよかったんですが、、、




違反を報告
引用返信 削除キー/
■33976 / inTopicNo.4)  Re[3]: Process.StartでPDFファイルが開かない(Windows10)
□投稿者/ h-sake 一般人(6回)-(2018/09/14(Fri) 14:56:40)
  • アイコン「解決済み」忘れました。
解決み!
違反を報告
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Mode/  Pass/


- Child Tree -