することはできるディレクトリへのDLL検索パスからのバッチファイルまたはcmdスクリプト?
-
21-08-2019 - |
質問
MSDNのような機能 SetDllDirectory() 使用でき挿入するディレクトリに DLL検索パス.この機能からアクセスできるバッチファイルまたはcmdスクリプトも使用によ cscript?
を目指して開発版のdllを見る前に、既存の古い方につきましては当社までおWINDIR%。なプログラムを書くだけます。
おかげさまで事前にお時間や思いを語りました。
解決
あなたは%WINDIR%の前に最初に検索された実行ファイルと同じパスにDLLを配置することができます。バッチファイルから直接SetDllDirectoryを呼び出す方法はありません。
しかし、あなたは、%PATH%変数に自分のDLLのディレクトリを挿入することができ、およびWindowsは、そこにDLLを見つけるでしょう。
set PATH=C:\path to your dll;%PATH%
他のヒント
目的は、我々の開発を持っていることです DLLのバージョンは前に見つかりました %%WINDIRの内の1つの古い既存の などのプログラムを書かなく ちょうどそのためます。
DLLは、Windowsがシステムパスで指定されたフォルダ内のファイルを検索します実行ファイルと同じフォルダにない場合。だから、あなたがする必要があるすべては、パスの開始時に、あなたのフォルダを入れてます。
あなたは、次のバッチコマンドを使用してこれを行うことができます:
set PATH=c:\MyDLLFolder;%PATH%
は、あなたのパスを使用すると、次のバッチコマンドを使用する必要がある空白が含まれている場合:
set PATH="C:\My DLL Folder";%PATH%
しかし、このパスの変更を覚えているが、現在のコンソールセッションのPATHに行われます。あなたは閉じて、コンソールを再度開く場合は、これらのパスの変更は失われます。
この紛争のdll検索順は、(コメント@jussijの解答)、こちらのリストで描かれた株式会社エンパシは、Microsoft社からwindowsのメンバー
の場合 SafeDllSearchMode
を有効にすると、検索順は、
- ディレクトリからアプリケーションから読み込まれます。
- システムのディレクトリです。をご利用
GetSystemDirectory
関数のパスを取得してクリックします。 - おける16ビットのシステムをクリックします。ある機能を取得しますパスはこのディレクトリが検索されます。
- Windowsのディレクトリです。をご利用
GetWindowsDirectory
機能の パンをクリックします。 - 現在のディレクトリです。
- のディレクトリにPATH環境変数となります。注意ると考えることはできませんのお申パスで指定されたアプリのパスを登録す。アプリのパスキーを使用しない場合をコンピューティングするこのDLL検索パスです。
の場合 SafeDllSearchMode
無効の検索順は、
- ディレクトリからアプリケーションから読み込まれます。
- 現在のディレクトリです。
- システムのディレクトリです。をご利用
GetSystemDirectory
関数のパスを取得してクリックします。 - おける16ビットのシステムをクリックします。ある機能を取得しますパスはこのディレクトリが検索されます。
- Windowsのディレクトリです。をご利用
GetWindowsDirectory
関数のパスを取得してクリックします。 - のディレクトリにPATH環境変数となります。注意ると考えることはできませんのお申パスで指定されたアプリのパスを登録す。アプリのパスキーを使用しない場合をコンピューティングするこのDLL検索パスです。