Aplicativos de 16 bits em execução no NTVDM

Estou trapando para a execução de alguns aplicativos antigos de 16 bits que nossos internautas não deveriam mais usar. Eles são aplicativos do DOS de 1985, então capturar para eles era fácil ... capturar qualquer processo que fosse lançado sob NTVDM.exe

Agora, o problema é descobrir qual programa NTVDM está realmente executando sob o capô. Aparentemente, há um par de 1985 programas que eles devem ser autorizados a executar, então eu preciso ver o nome EXE real que está se escondendo em 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>

Quando eu capturar as informações da instância, posso obter a linha de comando, mas os argumentos são "-f -i10" ... Não há nenhum nome de EXE na linha de comando. Existe algum outro método / propriedade que eu deveria estar olhando para determinar o nome EXE do aplicativo de 16 bits que está realmente em execução?

ATUALIZAR: Deixe-me refinar a pergunta: Se eu puder encontrar o processo NTVDM, como posso - programaticamente - saber o caminho real para o EXE que está sendo executado embaixo?

Obrigado.

questionAnswers(3)

yourAnswerToTheQuestion