Verifique se existe um executável no caminho do Windows

Se eu executar um processo comShellExecute (ou em .net comSystem.Diagnostics.Process.Start()) o processo do nome do arquivo para iniciar não precisa ser um caminho completo.

Se eu quiser iniciar o bloco de notas, posso usar

Process.Start("notepad.exe");

ao invés de

Process.Start(@"c:\windows\system32\notepad.exe");

porque o direcotryc:\windows\system32 faz parte da variável de ambiente PATH.

como posso verificar se existe um arquivo no PATH sem executar o processo e sem analisar a variável PATH?

System.IO.File.Exists("notepad.exe"); // returns false
(new System.IO.FileInfo("notepad.exe")).Exists; // returns false

mas preciso de algo assim:

System.IO.File.ExistsOnPath("notepad.exe"); // should return true

e

System.IO.File.GetFullPath("notepad.exe"); // (like unix which cmd) should return
                                           // c:\windows\system32\notepad.exe

Existe uma classe predefinida para executar esta tarefa disponível na BCL?

questionAnswers(6)

yourAnswerToTheQuestion