16-битные приложения, работающие под NTVDM

Я нахожусь в ловушке для выполнения некоторых старых 16-битных приложений, которые наши внутренние люди больше не должны использовать. Это 1985 DOS-приложения, так что ловить их было легко ... захватить любой процесс, который запускается под NTVDM.exe

Теперь проблема состоит в том, чтобы выяснить, какая программа NTVDM фактически работает под капотом. Очевидно, есть пара программ 1985 года, которые им СЛЕДУЕТ запускать, поэтому мне нужно увидеть фактическое имя EXE, которое скрывается под NTVDM.

<pre><code> WqlEventQuery query = new WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0, 0, 1), "TargetInstance isa \"Win32_Process\""); ManagementEventWatcher watcher = new ManagementEventWatcher(query); watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived); watcher.Start(); ... static void watcher_EventArrived(object sender, EventArrivedEventArgs e) { ManagementBaseObject instance = (ManagementBaseObject)e.NewEvent["TargetInstance"]; ProcessInfo PI = new ProcessInfo(); PI.ProcessID = int.Parse(instance["ProcessID"].ToString()); PI.ProcessName = instance["Name"].ToString(); PI.ProcessPath = instance["ExecutablePath"].ToString(); // Here's the part I need... PI.ActualEXE = ???; // ... do the magic on the PI class ... instance.Dispose(); } </code></pre>

Когда я получаю информацию об экземпляре, я могу получить командную строку, но аргументы-f -i10 " ... В командной строке нет имени EXE. Есть ли другой метод / свойство, на которое я должен обратить внимание, чтобы определить имя EXE 16-битного приложения, которое 'на самом деле работает?

ОБНОВИТЬ: Позвольте мне уточнить вопрос: если я могу найти процесс NTVDM, как я могу - программно - узнать фактический путь к EXE, который выполняется под ним?

Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос