.net - Sådan finder du, om en eksekverbar er i PATH uden at gentage alle mapper på stien (eller udføre den)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg ved, at filoperationer er ret ikke-standard mellem OS'er og API'er, men jeg vil gerne opdage, om der findes en eksekverbar (navngivet i løbetid) i stien.


Dette er en validering af brugerindgang, og senere kaldes appen ved hjælp af


        ProcessStartInfo ^processStartInfo = gcnew ProcessStartInfo("ReallyCool.exe");
        Process ^process = gcnew Process();
        process->StartInfo = processStartInfo;
        bool processStarted = process->Start();


dette kaster kun, når det kommer til den sidste linje ovenfor.


Er der nogen der ved, hvordan jeg kan kontrollere, at filen er der, før jeg risikerer at faktisk udføre den, eller er jeg ved at lade brugere køre '.exes' gennem min app?


Som pr. Titel, er jeg ivrig efter at undgå at søge hver mappe på stien eksplicit, hvis det er muligt. Jeg er heller ikke sikker på, hvordan jeg kunne få Windows-stien fra .NET-kodning.

Bedste reference


For at kontrollere, om filen er der, skal du bruge bool doesFileExist = System.IO.File.Exists(path);


Jeg tvivler på, at der er en nem måde at vide, om det er en gyldig eksekverbar uden at forsøge at køre den.