アカウント名:
パスワード:
Windowsには動的ライブラリ(DLL)を相対指定で読み込もうとすると最初にカレントディレクトリから探すという仕様
2000年の時点でこんな記事が…「WindowsのDLL呼び出し順序に由来するセキュリティ・ホール - DLLを呼び出す「順序」が元凶 [nikkeibp.co.jp]」
それにしても酷い仕様だ。
15年前のソフトも動かせるってのはそういう事です。まぁ、その記事はかなり古い(10年前ですよ!)ので今セキュリティ的にサポートされてるXP SP3以降であれば、問題はかなり低減されています。
この問題が発生するのは、自分がそのDLLを使う事が解っているのに、DLLを適切に入れてないケースです。ぶっちゃけ、自分が何を使ってるのか解ってない、構成管理が出来ていない、適切にセットアップ出来てないケースです。最近の大規模化してるアプリだとまぁ、ありがちではありますが・・・例えばVBアプリケーションやDirectXアプリケーションなんかはランタイムDLLの一部が無くてもと
> 普通は自アプリケーションのフォルダを絶対指定するとは思いますが、自アプリケーションのフォルダは常に最優先だったはずだけど(KnownDllとかの例外はあるけど)。
Windowsが機能追加して「MSめ、同じ名前のDLLを標準で組み込みやがった畜生!」とかいうケースがあるので、絶対パスってます。
いや、自ディレクトリが最優先でしょ。標準で組み込まれようとまず無関係でない?それとも特別なDLLと名前が被ったの?
大切な前提として「ユーザーが消した」「セットアップが不完全」ってのが検出できて適切に縮退する事です。中途半端に動くのが一番怖いので。
あと、どうせ他のリソース(iniとかxmlやら)は絶対パスで読まないと駄目なので絶対パスを構築する関数が用意済みってのもあるかしら。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
2000年からわかっていた問題 (スコア:2, 興味深い)
Windowsには動的ライブラリ(DLL)を相対指定で読み込もうとすると最初にカレントディレクトリから探すという仕様
2000年の時点でこんな記事が…「WindowsのDLL呼び出し順序に由来するセキュリティ・ホール - DLLを呼び出す「順序」が元凶 [nikkeibp.co.jp]」
それにしても酷い仕様だ。
Re: (スコア:5, 参考になる)
15年前のソフトも動かせるってのはそういう事です。
まぁ、その記事はかなり古い(10年前ですよ!)ので今セキュリティ的にサポートされてるXP SP3以降であれば、問題はかなり低減されています。
この問題が発生するのは、自分がそのDLLを使う事が解っているのに、DLLを適切に入れてないケースです。
ぶっちゃけ、自分が何を使ってるのか解ってない、構成管理が出来ていない、適切にセットアップ出来てないケースです。
最近の大規模化してるアプリだとまぁ、ありがちではありますが・・・
例えばVBアプリケーションやDirectXアプリケーションなんかはランタイムDLLの一部が無くてもと
Re:2000年からわかっていた問題 (スコア:0)
> 普通は自アプリケーションのフォルダを絶対指定するとは思いますが、
自アプリケーションのフォルダは常に最優先だったはずだけど(KnownDllとかの例外はあるけど)。
Re:2000年からわかっていた問題 (スコア:1)
Windowsが機能追加して「MSめ、同じ名前のDLLを標準で組み込みやがった畜生!」とかいうケースがあるので、絶対パスってます。
Re: (スコア:0)
いや、自ディレクトリが最優先でしょ。
標準で組み込まれようとまず無関係でない?
それとも特別なDLLと名前が被ったの?
Re:2000年からわかっていた問題 (スコア:1)
大切な前提として「ユーザーが消した」「セットアップが不完全」ってのが検出できて適切に縮退する事です。
中途半端に動くのが一番怖いので。
あと、どうせ他のリソース(iniとかxmlやら)は絶対パスで読まないと駄目なので絶対パスを構築する関数が用意済みってのもあるかしら。