トップ回答者
カレントフォルダー(CWD)のDLLが参照できないPCがある

質問
-
はじめまして。もし分かれば(同様の症状があれば)お教えください。
(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)でも同症状を確認
回答
-
C:\Program Files\WindowsApps\Microsoft.Office.Desktop~ということはストアアプリ版のExcelですかね。
そうだとすると現在のフォルダーは検索されないとなってますね。
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 編集済み gekkaMVP 2019年6月7日 3:36
- 回答の候補に設定 AzuleanMVP, Moderator 2019年6月7日 13:43
- 回答としてマーク p_th 2019年8月1日 1:32
すべての返信
-
佐祐理様 ご回答 誠にありがとうございます。
レジストリエディタの検索機能で 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は無効化
・スタンドアロン環境
※クリーンインストールは試していません。 -
C:\Program Files\WindowsApps\Microsoft.Office.Desktop~ということはストアアプリ版のExcelですかね。
そうだとすると現在のフォルダーは検索されないとなってますね。
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
- 編集済み gekkaMVP 2019年6月7日 3:36
- 回答の候補に設定 AzuleanMVP, Moderator 2019年6月7日 13:43
- 回答としてマーク p_th 2019年8月1日 1:32
-
p_thさん、こんにちは。フォーラムオペレーターのHarukaです。
MSDNフォーラムにご投稿くださいましてありがとうございます。
本件、gekka さんより参考になる投稿が寄せられたようでなによりです。
[回答としてマーク]機能は設定された投稿が後から参照しやすくなりますので、
同じ問題でお困りの方のためにも参考になった投稿に設定いただけますと幸いです。
お手数ですが、ご協力の程どうかよろしくお願いいたします。
MSDN/ TechNet Community Support Haruka
ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~