追加する必要があります:とにかくあなたのdllを\ system32 \に置くべきではありません!コードを変更し、インストーラーを変更します。c:\ windows \のどこにもないビットのホームを見つけます
たとえば、インストーラーはdllを次の場所に置きます。
\program files\<your app dir>\
or
\program files\common files\<your app name>\
(注:これを実際に行う方法は、環境変数%ProgramFiles%または%ProgramFiles(x86)%を使用して、Program Filesがどこにあるかを見つけることです.... c:\ program files \であるとは限りません。 ..)
次にレジストリタグを設定します:
HKLM\software\<your app name>
-- dllLocation
DLLを使用するコードはレジストリを読み取り、その場所にあるDLLに動的にリンクします。
上記は賢い方法です。
DLLまたはサードパーティのDLLを\ system32 \または\ syswow64にインストールすることはありません。静的にロードする必要がある場合は、dllをexeディレクトリ(それらが見つかる場所)に配置します。exe dirを予測できない場合(たとえば、他のexeがdllを呼び出す場合)、dll dirを検索パスに含める必要がある場合があります(可能な場合はこれを避けてください)。
system32とsyswow64はWindowsが提供するファイル用です... 他の人のファイル用ではありません。人々がそこに物を置くという悪い習慣に陥った唯一の理由は、それが常に検索パスにあり、多くのアプリ/モジュールが静的リンクを使用しているためです。(つまり、実際にそれに慣れると、本当の罪は静的リンクです-これはネイティブコードとマネージコードの罪です-常に常に動的にリンクします!)