none
カレントフォルダー(CWD)のDLLが参照できないPCがある RRS feed

  • 質問

  • はじめまして。もし分かれば(同様の症状があれば)お教えください。
    (VBAを使っていますが、VBA依存の問題ではないと思うのでこちらのフォーラムとしました)

    ■質問■
    下記レジストリ、グループポリシー以外にCWDがDLLの探索対象外となる設定・条件が存在するでしょうか?

    ■症状■
    自作DLLを C:\XYZ に格納して
    EXCEL VBAで C:\XYZ をカレントドライブ・カレントディレクトリ(CWD)としてから
    EXCEL VBAから自作DLLを参照しようとすると
    「VBA エラー 53 ファイルが見つかりません。自作.dll」 となります。
    (大抵のPCでは症状が出ませんが、一部PCで症状が出ます)

    ■調査状況■
    自作DLLをC:\Windows\SysWOW64 に置けば症状は生じません。また
    VBAを変更して、SetDefaultDllDirectories と AddDllDirectory を使って
    DLLのありかとしてC:\XYZ を明示的に指定すると症状は生じません。

    よって、CWDがDLLの探索対象になっているかどうかの問題と考えます。

    レジストリエントリ CWDIllegalInDllSearch は、該当のPCでは存在しませんでした。
    レジストリエントリ CWDIllegalInDllSearch を作って、0 (前述の既定の DLL 検索パスを使用する)
    としても、症状は解消しませんでした。(設定後、PCは再起動しています)

    ※症状の出ない別のPCで、0xFFFFFFFF(既定の DLL 検索順から現在の作業ディレクトリを削除する)
     とすると同症状が生じる、0とすれば、症状が生じないのは、確認済

    参考しているURL:
    ttps://support.microsoft.com/ja-jp/help/2264107/a-new-cwdillegalindllsearch-registry-entry-is-available-to-control-the

    グループポリシーの設定を確認しましたが、
    AppLockerのプロパティで、DLLの規則のコレクションは有効化されていませんでした。

    参考としているURL:
    ttps://www.atmarkit.co.jp/ait/articles/1506/04/news011.html

    ■症状の生じるPC環境■
     ・機種:FUJITSU LIFEBOOK A577/TX (PCは新品)
     ・Windows10 Pro /64ビット バージョン:1803 OSビルド:17134.81
     ・Excel2016/32ビット バージョン:1803 ビルド:9126.2116
    ※Panasonic Let's note CF-SV72DGQR(Win10)でも同症状を確認

    2019年6月6日 1:01

回答

  • C:\Program Files\WindowsApps\Microsoft.Office.Desktop~ということはストアアプリ版のExcelですかね。
    そうだとすると現在のフォルダー検索されないとなってますね。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)


    2019年6月7日 3:33

すべての返信

  • レジストリエントリ CWDIllegalInDllSearch は、該当のPCでは存在しませんでした。

    設定個所はいくつかあるようですが、いずれにも存在しなかったということでしょうか?

    Process Monitorを使用するとアプリケーションのAPI呼び出しを確認できます。「自作.dll」をどの順で検索しているかも把握できるため、原因調査に使えると思います。

    • 編集済み 佐祐理 2019年6月6日 1:21
    2019年6月6日 1:18
  • 佐祐理様 ご回答 誠にありがとうございます。

    レジストリエディタの検索機能で CWDIllegalInDllSearch を検索してもヒットしませんでした。
    特に以下には設定はありませんでした。
    コンピューター上の指定のアプリケーション にこのレジストリ エントリを使⽤する場合:
    HKEY_LOCAL_MACHINE\Software \Microsoft\Windows NT\CurrentVersion \Image File Execution Options\<アプリ ケーション バイナリ名>

    問題のPCにてProcess Monitorで確認した所、以下の順番でDLL検索が行われていました。
    C:\Program Files\WindowsApps\Microsoft.Office.Desktop_16010.9126.2116.0_x86__8wekyb3d8bbwe\自作.dll
    C:\Program Files\WindowsApps\Microsoft.Office.Desktop.Excel_16010.9126.2116.0_x86…\自作.dll
    C:\Program Files\WindowsApps\Microsoft.Office.Desktop.Outlook_16010.9126.2116.0_x86…\自作.dll
    C:\Program Files\WindowsApps\Microsoft.Office.Desktop.Word_16010.9126.2116.0_x86…\自作.dll
    C:\Program Files\WindowsApps\Microsoft.Office.Desktop.Excel_16010.9126.2116.0_x86…\Office16\自作.dll
    C:\Program Files\WindowsApps\Microsoft.Office.Desktop_16010.9126.2116.0_x86…\VFS\SystemX86\自作.dll
    C:\Program Files\WindowsApps\Microsoft.Office.Desktop.Excel_16010.9126.2116.0_x86…\VFS\SystemX86\自作.dll
    C:\Windows\SysWOW64\自作.dll

    レジストリエディタで以下を追加した状態でも、DLLの検索順位に変化ありませんでした。
    CWDIllegalInDllSearch
    ・場所: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
    ・値 : 0

    なお
    ・実際のフォルダー名・ファイル名・ログオンアカウント名に全角文字は使用していません。
    ・管理者権限でログオン
    ・ウィルス対策ソフト、UACは無効化
    ・スタンドアロン環境
    ※クリーンインストールは試していません。

    2019年6月7日 2:03
  • C:\Program Files\WindowsApps\Microsoft.Office.Desktop~ということはストアアプリ版のExcelですかね。
    そうだとすると現在のフォルダー検索されないとなってますね。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)


    2019年6月7日 3:33
  • gekka様、ご回答 真にありがとうございました。
    疑問点解決しました。ストアアプリ版でした。

    なるほど・・・そうでしたか_| ̄|○
    (VBAの問題ではないと思いましたがVBAでないと起きない問題でした・・・)

    ご提示いただいた記事:
    Microsoft ストア アプリ版 Office 2016 (Centennial) での開発 – その1 – (DLL の読み込み)

    にgoogle検索でたどり着くのはやや難しいようです。
    今後は、コミュニティ内検索の活用を頭に入れておきたいと思います。

    2019年6月7日 6:00
  • p_thさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    本件、gekka さんより参考になる投稿が寄せられたようでなによりです。

    [回答としてマーク]機能は設定された投稿が後から参照しやすくなりますので、
    同じ問題でお困りの方のためにも参考になった投稿に設定いただけますと幸いです。

    お手数ですが、ご協力の程どうかよろしくお願いいたします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年6月11日 1:57
    モデレータ