diff --git a/source/UninstallTools/Junk/Finders/Registry/ComScanner.cs b/source/UninstallTools/Junk/Finders/Registry/ComScanner.cs index 2ea9435a..f9a063cb 100644 --- a/source/UninstallTools/Junk/Finders/Registry/ComScanner.cs +++ b/source/UninstallTools/Junk/Finders/Registry/ComScanner.cs @@ -36,12 +36,8 @@ public override IEnumerable FindJunk(ApplicationUninstallerEntry ta if (string.IsNullOrEmpty(target.InstallLocation)) yield break; - try - { - if (UninstallToolsGlobalConfig.IsSystemDirectory(target.InstallLocation)) - yield break; - } - catch (ArgumentException ex) { Trace.WriteLine(ex); } + if (UninstallToolsGlobalConfig.IsSystemDirectory(target.InstallLocation)) + yield break; foreach (var comEntry in _comEntries.Where(x => PathTools.SubPathIsInsideBasePath(target.InstallLocation, x.FullFilename, true))) { diff --git a/source/UninstallTools/UninstallToolsGlobalConfig.cs b/source/UninstallTools/UninstallToolsGlobalConfig.cs index cbaed15c..7ee6b7e1 100644 --- a/source/UninstallTools/UninstallToolsGlobalConfig.cs +++ b/source/UninstallTools/UninstallToolsGlobalConfig.cs @@ -255,7 +255,24 @@ public static bool IsSystemDirectory(DirectoryInfo dir) /// public static bool IsSystemDirectory(string installLocation) { - return IsSystemDirectory(new DirectoryInfo(installLocation)); + if (string.IsNullOrEmpty(installLocation)) return false; + + try + { + return IsSystemDirectory(new DirectoryInfo(installLocation)); + } + catch (ArgumentException ex) + { + Trace.WriteLine(ex); + // Treat this as a no-touch directory just to be safe + return true; + } + catch (IOException ex) + { + Trace.WriteLine(ex); + // Treat this as a no-touch directory just to be safe + return true; + } } ///