0

私は面白い問題を抱えています:

私が書いたプログラムは DLL を使用しています。インストールすると、プログラム exe と DLL の両方が c:\Program Files (x86)\MyProduct の下にあります。

通常、読み込まれる DLL はサードパーティのドライバーです。テスト目的で、それを独自の実装に置き換えました。プログラム ファイル フォルダでサード パーティの DLL を独自の DLL で上書きすると、プログラム EXE が DLL を起動できず、LoadLibraray は 0 を返し、GetLastError は -529697949 を返します。ここで、MyProduct フォルダー全体を c:\temp にコピーして、DLL をロードできるプログラム EXE を開始します。

したがって、私の問題は Windows セキュリティに関連していると思います。プログラムと私のバージョンの DLL は両方とも C++ で書かれています。ユーザーアカウントには管理者アクセス権があり、プログラムを管理者として実行するかどうかは問題ではないようです。DLL がロードされるのを防ぐ可能性のある Windows 保護メカニズムがあるかどうかを知っている人はいますか?

ありがとうございました

アップデート

この問題は、私の DLL が DLL の init 関数で実行ディレクトリに書き込もうとすることに関連していると思います。Program Files ディレクトリ ウィンドウで実行する場合、これは許可されません。

4

1 に答える 1