Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="volume"></param>
        /// <returns></returns>
        public static Prefetch[] GetInstances(string volume)
        {
            // Get current volume
            Helper.getVolumeName(ref volume);

            using (FileStream streamToRead = Helper.getFileStream(volume))
            {
                NtfsVolumeBootRecord VBR = VolumeBootRecord.Get(streamToRead) as NtfsVolumeBootRecord;

                // Get a byte array representing the Master File Table
                byte[] MFT = MasterFileTable.GetBytes(streamToRead, volume);

                // Build Prefetch directory path
                string pfPath = Helper.GetVolumeLetter(volume) + @"\Windows\Prefetch";

                /*if(CheckStatus(Helper.GetVolumeLetter(volume) + @"\Windows\system32\config\SAM") != PREFETCH_ENABLED.DISABLED)
                 * {*/
                // Get IndexEntry
                IndexEntry[] pfEntries = IndexEntry.GetInstances(pfPath);
                Prefetch[]   pfArray   = new Prefetch[pfEntries.Length];

                int i = 0;

                foreach (IndexEntry entry in pfEntries)
                {
                    if (entry.Filename.Contains(".pf"))
                    {
                        pfArray[i] = new Prefetch(FileRecord.Get(volume, (int)entry.RecordNumber, true).GetContent(VBR));
                        i++;
                    }
                }

                return(pfArray);

                /*}
                 * else
                 * {
                 *  throw new Exception("Prefetching is disabled. Check registry to ensure Prefetching is enabled.");
                 * }*/
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="volume"></param>
        /// <returns></returns>
        public static ShellLink[] GetInstances(string volume)
        {
            Helper.getVolumeName(ref volume);

            NtfsVolumeBootRecord VBR = VolumeBootRecord.Get(volume) as NtfsVolumeBootRecord;

            List <ShellLink> slList = new List <ShellLink>();

            foreach (FileRecord r in FileRecord.GetInstances(volume))
            {
                try
                {
                    if (r.Name.Contains(".lnk"))
                    {
                        slList.Add(new ShellLink(r.GetContent(VBR), r));
                    }
                }
                catch
                {
                }
            }

            return(slList.ToArray());
        }