CairoDesktop.AppGrabber.AppGrabber.generateAppListRecursing C# (CSharp) Метод

generateAppListRecursing() приватный Метод

private generateAppListRecursing ( DirectoryInfo directory ) : List
directory System.IO.DirectoryInfo
Результат List
        private List<ApplicationInfo> generateAppListRecursing(DirectoryInfo directory)
        {
            //_logger.Debug("Scanning directory {0}", directory.FullName);
            List<ApplicationInfo> rval = new List<ApplicationInfo>();

            foreach (DirectoryInfo subfolder in directory.GetDirectories())
            {
                rval.AddRange(generateAppListRecursing(subfolder));
            }

            foreach (FileInfo file in directory.GetFiles())
            {
                //_logger.Debug("Interrogating file {0}", file.FullName);
                ApplicationInfo ai = new ApplicationInfo();
                String ext = Path.GetExtension(file.FullName);

                if (executableExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase)) {
                    try
                    {
                        ai.Name = Path.GetFileNameWithoutExtension(file.FullName);
                        ai.Path = file.FullName;
                        string target = string.Empty;

                        if (file.Extension.Equals(".lnk", StringComparison.OrdinalIgnoreCase))
                        {
                            //_logger.Debug("Attempting to interrogate shortcut to application: {0}", file.FullName);
                            Interop.Shell.Link link = new Interop.Shell.Link(file.FullName);
                            target = link.Target;
                        }
                        else
                        {
                            target = file.FullName;
                        }

                        if (!executableExtensions.Contains(Path.GetExtension(target), StringComparer.OrdinalIgnoreCase))
                        {
                            System.Diagnostics.Debug.WriteLine(file.Name + ": " + target);
                            continue;
                        }

                        //_logger.Debug("Attempting to get associated icon for {0}", file.FullName);
                        //ai.Icon = ai.GetAssociatedIcon();
                        rval.Add(ai);
                    }
                    catch (Exception)
                    {
                        //Output the reason to the debugger
                        //_logger.Debug("Error creating ApplicationInfo object in appgrabber. Details: {0}\n{1}", ex.Message, ex.StackTrace);
                    }
                }
            }

            return rval;
        }