From f091817d662df6028e4d7160058dd230b9d4ee40 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Fri, 21 Apr 2017 14:42:33 -0600 Subject: [PATCH] further reduce our search space this also reduces the chance we will try to access a folder which we dont have permissions for --- Tools/find_vstool.ps1 | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Tools/find_vstool.ps1 b/Tools/find_vstool.ps1 index 3e85f0601..e62af713d 100644 --- a/Tools/find_vstool.ps1 +++ b/Tools/find_vstool.ps1 @@ -4,12 +4,6 @@ param ( $FileName ) -# Returns the first full path to the $FileName that our search can find - -$rootSearchPaths = @( - [System.IO.Directory]::EnumerateFileSystemEntries("C:\Program Files", $FileName, [System.IO.SearchOption]::AllDirectories), - [System.IO.Directory]::EnumerateFileSystemEntries("C:\Program Files (x86)", $FileName, [System.IO.SearchOption]::AllDirectories) -) function EditBinCertificateIsValid() { @@ -29,11 +23,19 @@ function EditBinCertificateIsValid() { } } +$rootSearchPaths = @( + [System.IO.Directory]::EnumerateFileSystemEntries("C:\Program Files", "*Visual Studio*", [System.IO.SearchOption]::TopDirectoryOnly), + [System.IO.Directory]::EnumerateFileSystemEntries("C:\Program Files (x86)", "*Visual Studio*", [System.IO.SearchOption]::TopDirectoryOnly) +) +# Returns the first full path to the $FileName that our search can find foreach ($searchPath in $rootSearchPaths) { - foreach ($entry in $searchPath) { - if (EditBinCertificateIsValid -Path $entry) { - return $entry + foreach ($visualStudioFolder in $searchPath) { + $matchingExes = [System.IO.Directory]::EnumerateFileSystemEntries($visualStudioFolder, $FileName, [System.IO.SearchOption]::AllDirectories) + foreach ($matchingExe in $matchingExes) { + if (EditBinCertificateIsValid -Path $matchingExe) { + return $matchingExe + } } } }