-1

dotnet フレームワークに依存せずに win32 コンソール アプリケーションを使用しています。

C:\Windows\System32\MSI.dll の MsiOpenPackage API を使用しています。API の実行中に、MSCOREE.dll がプロセスに読み込まれます。

次の行は、mscorwks.dll をプロセスにロードします。

MsiDoAction(hInstall,_T("InstallValidate"));

MsiDoActionMSI.dll からの他の API です。

ドット フレームワークがインストールされていないクリーンな Windows XP OS (サービス パック 2) でアプリケーションを実行している場合、これらの DLL はプロセスにロードされませんが、アプリケーションは正常に動作します。

dotnet フレームワークがシステムにインストールされている場合、これらの mscorwks.dll と MSCOREE.dll が私のプロセスに読み込まれる理由を知っている人はいますか?

私のプロセスは純粋な win32 コンソール アプリケーションであり、dotnet フレームワークとの依存関係はありません。プロセスの開始時に、これら 2 つの dll がプロセスにロードされていません。関数の実行中にMsiOpenPackageMSI.DLLMsiDoActionから読み込まれます。

これらの DLL のプロセスへのロードを停止する方法を教えてください。

4

1 に答える 1

0

これはおそらく、.NET アセンブリの操作 (GAC へのアセンブリのインストールなど) のサポートを準備している Windows インストーラです。これを防ぐ唯一の方法は、.NET フレームワークのないマシンで実行することだと思います。メイン プロセスにまったく入れたくない場合は、ヘルパー プロセスで Msi 作業を行う必要があります。

于 2012-05-10T11:40:06.227 に答える