@@ -414,7 +414,7 @@ private static IEnumerable<Win32> StartMenuPrograms(string[] suffixes, string[]
414
414
return programs ;
415
415
}
416
416
417
- private static IEnumerable < Win32 > PATHPrograms ( string [ ] suffixes , string [ ] protocols )
417
+ private static IEnumerable < Win32 > PATHPrograms ( string [ ] suffixes , string [ ] protocols , List < string > commonParents )
418
418
{
419
419
var pathEnv = Environment . GetEnvironmentVariable ( "Path" ) ;
420
420
if ( String . IsNullOrEmpty ( pathEnv ) )
@@ -424,6 +424,8 @@ private static IEnumerable<Win32> PATHPrograms(string[] suffixes, string[] proto
424
424
425
425
var paths = pathEnv . Split ( ";" , StringSplitOptions . RemoveEmptyEntries ) . DistinctBy ( p => p . ToLowerInvariant ( ) ) ;
426
426
427
+ paths = paths . Where ( x => commonParents . All ( parent => ! x . StartsWith ( parent , StringComparison . OrdinalIgnoreCase ) ) ) ;
428
+
427
429
var toFilter = paths . AsParallel ( ) . SelectMany ( p => EnmuerateProgramsInDir ( p , suffixes , recursive : false ) ) ;
428
430
429
431
var programs = ExceptDisabledSource ( toFilter . Distinct ( ) )
@@ -592,8 +594,8 @@ public static Win32[] All(Settings settings)
592
594
593
595
if ( settings . EnablePATHSource )
594
596
{
595
- var path = PATHPrograms ( settings . GetSuffixes ( ) , protocols ) ;
596
- autoIndexPrograms = autoIndexPrograms . Concat ( path ) ;
597
+ var path = PATHPrograms ( settings . GetSuffixes ( ) , protocols , commonParents ) ;
598
+ programs = programs . Concat ( path ) ;
597
599
}
598
600
599
601
autoIndexPrograms = ProgramsHasher ( autoIndexPrograms ) . ToArray ( ) ;
0 commit comments