public static DriveObject getDriveContents(string DrivePath, string AltName)
        {
            DataManager.LogMessage("Getting Drive Contents of " + DrivePath);
            // Form Directory Object
            DriveObject rootDrive = ConstructDriveObject(DrivePath, DriveObject.DriveObjectType.Directory, AltName);

            DataManager.LogMessage("Root Drive Object made");
            ProcessDirectory(rootDrive);
            return(rootDrive);
        }
        /// <summary>
        /// Recursivly searches through a given path, building nested DriveObjects for all subdirectories and files.
        /// </summary>
        /// <param name="curDirectory"></param>
        private static decimal ProcessDirectory(DriveObject curDirectory)
        {
            decimal size = 0;

            try
            {
                DataManager.LogMessage("Processing Directory of path: " + curDirectory.path);
                // Recurse into subdirectories of this directory.
                string[] subdirectoryEntries = Directory.GetDirectories(curDirectory.path);
                foreach (string subdirectory in subdirectoryEntries)
                {
                    if (Directory.Exists(subdirectory))
                    {
                        DriveObject subDriveObject = ConstructDriveObject(subdirectory, DriveObject.DriveObjectType.Directory);
                        curDirectory.addSubDirectory(subDriveObject);
                        size += ProcessDirectory(subDriveObject);
                    }
                }

                // Process the list of files found in the directory.
                string[] fileEntries = Directory.GetFiles(curDirectory.path);
                foreach (string fileName in fileEntries)
                {
                    if (File.Exists(fileName))
                    {
                        DriveObject subDriveObject = ConstructDriveObject(fileName, DriveObject.DriveObjectType.File);
                        curDirectory.addSubDirectory(subDriveObject);
                        size += subDriveObject.size;
                    }
                }
                curDirectory.size = size;
            }
            catch (System.UnauthorizedAccessException e)
            {
                DataManager.LogMessage(e.Message);
            }

            return(size);
        }