NTVDM内で実行されている DOS プログラムによってロードされる VDD dll があります。この dll は C++/CLI を使用し、.NET アセンブリを参照します。
全体として、読み込みプロセスは次のようになります。
NTVDM runs:
prntsr.com which uses VDD RegisterModule to load:
prnvdd.dll which references .NET assembly:
prnlib.dll
、およびファイルはすべて同じフォルダーにありますprntsr.com
。prnvdd.dll
prnlib.dll
ただし、ロード時に次の例外が発生します。
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'PRNLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ecf23cee305e91b7' or one of its dependencies. The system cannot find the file specified.
File name: 'PRNLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ecf23cee305e91b7'
at VDD_Initialise()
=== Pre-bind state information ===
LOG: User = DOMAIN\user
LOG: DisplayName = PRNLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ecf2
3cee305e91b7
(Fully-specified)
LOG: Appbase = file:///C:/WINDOWS/system32/
LOG: Initial PrivatePath = NULL
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: PRNLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ecf23cee305e91b7
LOG: Attempting download of new URL file:///C:/WINDOWS/system32/PRNLib.DLL.
LOG: Attempting download of new URL file:///C:/WINDOWS/system32/PRNLib/PRNLib.DLL.
LOG: Attempting download of new URL file:///C:/WINDOWS/system32/PRNLib.EXE.
LOG: Attempting download of new URL file:///C:/WINDOWS/system32/PRNLib/PRNLib.EXE.
アセンブリのみを検索C:\WINDOWS\system32\
します。これは NTVDM.EXE が原因だと思います。これは、アセンブリが読み込まれる実際のプロセスであるため、その場所を AppBase として取得します。
AppBase を変更する方法や、この問題を回避する方法はありますか?