关闭

C# 系统应用之获取Windows最近使用记录

标签: 获取最近历史记录C#系统应用Recent ItemsWindows系统
5395人阅读 评论(8) 收藏 举报
分类:

由于毕业设计项目需要删除Windows最近历史记录,这就需要获取Windows最近历史记录 Recent.本文就主要叙述通过C#实现获取Recent中使用的文件和文件夹.首先声明该文章主要是结合自己的毕设项目,同时的主要代码来自Level Up的博客.在此非常感谢该博主,也希望大家学习他的文章: http://www.dotblogs.com.tw/larrynung/archive/2012/09/27/75118.aspx

一.Windows最近历史记录

在Windows系统中有Recent Items或Recent这样的东西存储最近使用的文件和文件夹的历史记录,通过快捷键"Windows+R"打开运行输入"recent"可以打开最近浏览文件和文件夹如下图所示:

当我们浏览文件时,它会自动的以快捷的方式存储历史记录,Windows会自动添加到该文件夹下记录系统最近使用的文件或文件夹,同样Office、Cookies等都有相对应的Recent.我们可以通过Environment.GetFolderPath(Environment.SpecialFolder.Recent)获取Windows的Recent最近历史记录的位置,我电脑中recent的路径为 "C:\Users\dell\AppData\Roaming\Microsoft\Windows\Recent".
同时由于该获取较简单,就不详细叙述.补充C#获取桌面、Recent、我的文档、我的音乐、Cookies等路径参考文章http://hi.baidu.com/ysuhy/item/b12a57d3660ccc90270ae7f9

二.遍历Recent中文件路径

在遍历Recent目录时,遍历方法参考了Level Up的文章"[C#][VB.NET].NET捷径(ShortCut)控制"如下图"dota2.txt"的捷径(ShortCut),通过目标获取Recent快捷键的原始存放路径.

这里Level Up作者整理了一个类,通过这个类实现获取文件原始路径,右键项目"添加"类,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;              //Directory 目录 
using System.Reflection;      //BindingFlags 枚举

namespace GetPathRecent
{
    public class RecentlyFileHelper
    {
        public static string GetShortcutTargetFile(string shortcutFilename)
        {
            var type = Type.GetTypeFromProgID("WScript.Shell");  //获取WScript.Shell类型
            object instance = Activator.CreateInstance(type);    //创建该类型实例
            var result = type.InvokeMember("CreateShortCut", BindingFlags.InvokeMethod, null, instance, new object[] { shortcutFilename });
            var targetFile = result.GetType().InvokeMember("TargetPath", BindingFlags.GetProperty, null, result, null) as string;
            return targetFile;
        }

        public static IEnumerable<string> GetRecentlyFiles()
        {
            var recentFolder = Environment.GetFolderPath(Environment.SpecialFolder.Recent);  //获取Recent路径
            return from file in Directory.EnumerateFiles(recentFolder)
                   where Path.GetExtension(file) == ".lnk"
                   select GetShortcutTargetFile(file);
        }
    }
}

三.显示路径listBox1控件中

向Form中添加控件listBox和fileSystemWatcher(监控文件系统更改通知,并在目录或文件更改时引发事件).具体代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GetPathRecent
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //载入Form 
        private void Form1_Load(object sender, EventArgs e)
        {
            listBox1.Items.Clear();            
            foreach (var file in RecentlyFileHelper.GetRecentlyFiles())
            {
                listBox1.Items.Add(file);
            }

            //获取recent路径
            var recentFolder = Environment.GetFolderPath(Environment.SpecialFolder.Recent);
            fileSystemWatcher1.Path = recentFolder;
            fileSystemWatcher1.Created += new System.IO.FileSystemEventHandler(fileSystemWatcher1_Created);
        }

        //当在指定Path(即recent路径)中创建文件和目录时增加ShortCut
        private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e)
        {
            listBox1.Items.Add(RecentlyFileHelper.GetShortcutTargetFile(e.FullPath));
        }
    }
}

四.运行结果

显示Recent中Windows最近浏览的文件及文件夹原始路径运行结果如下:

其中与"一.Windows历史记录"中图对应,亦可以发现dota2.txt是对应捷径"G:\dota2\dota2.txt"证明了文章.到此,我们就获取到了Windows的最近历史记录,要实现清除Recent的历史记录也非常容易,同时清除指定U盘中的文件记录也可以实现.同样如果想删除Office最近历史记录路径为"C:\Users\dell\AppData\Roaming\Microsoft\Office\Recent".如下图所示:

五.总结及感谢

该文章主要是结合自己的毕业设计中U盘清除Windows历史记录、Office历史记录设计完成,同时查看了很多资料和书籍,其中给予我帮助最大的是level up的文章,由于这方面的资料较少,所以弥足珍贵.同时声明该文章的代码主要参考了Level Up的博客http://www.dotblogs.com.tw/larrynung/archive/2012/09/27/75118.aspx
最后,希望文章对大家有所帮助,同时希望大家去关注上面提到博主的文章,他写了很多文章,都非常有用,无论是技术性还是理论性.如果该篇文章中有错误或不足之处,请大家海涵!
(By:Eastmount 2014-1-19 夜4点http://blog.csdn.net/eastmount)

3
0
查看评论

C#-记录打开过的文件---ShinePans

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Li...
  • panshang1994
  • panshang1994
  • 2014-10-20 21:57
  • 937

c# 历史记录的实现

需求:在开发图像处理软件过程,需要撤回上一步操作; 解决思路:每一步结果保存到全局list,在撤销时读取即可; List list_bmp = new List(); private void button1_Click(object sender, EventArgs ...
  • qq_36266449
  • qq_36266449
  • 2017-10-29 11:34
  • 161

C# 系统应用之清除Cookies、IE临时文件、历史记录

本文主要是项目"个人电脑使用记录清除软件"系类文章中关于清除浏览器Cookies、IE临时文件、最近使用历史记录等文章.上一篇讲解了Cookie和Session基本知识及PHP应用,该篇就是结合实际项目从3个方面出发,其基本思想路线是首先了解上网历史记录的Windows中常用文件...
  • Eastmount
  • Eastmount
  • 2014-01-28 01:22
  • 7144

C# 写日志,用于记录程序运行状态

private object _logLock = new object(); public void WriteLog(string text) { lock (_logLock) { string line = String.Format("[{0:yyyy-MM-d...
  • ybhjx
  • ybhjx
  • 2016-03-26 21:00
  • 1380

在Winform中菜单动态添加“最近使用文件”

转载: 在我们一些和文件处理打交道的系统中,我们往往需要记录下最近使用的文件,这样方便用户快速打开之前浏览或者编辑过的文件,这种在很多软件上很常见,本文主要介绍在Winform界面菜单中实现【最近使用的文件】动态菜单的处理,实现一个较为常用的功能。 在我上篇随笔《文字处理控件TX T...
  • Lucky_JIE_AK
  • Lucky_JIE_AK
  • 2016-09-18 13:43
  • 434

用 C# 编写 USB 存储设备使用痕迹检测和删除工具

编写 USB 存储设备使用痕迹检测和删除工具
  • metaphysis
  • metaphysis
  • 2014-01-19 15:40
  • 6967

# 获取Windows最近使用记录并显示文件路径(源代码)

  • 2014-04-11 01:15
  • 52KB
  • 下载

C# 系统应用之通过注册表获取USB使用记录(一)

该文章是“个人电脑历史记录清除软件”项目的系统应用系列文章. 前面已经讲述了如何清除IE浏览器的历史记录、获取Windows最近访问文件记录、清除回收站等功能.现在我需要完成的是删除USB设备上的U盘、手机、移动硬盘等记录,真心觉得这方面资料特别少.这篇文章首先主要讲述了通过注册表获取USB使用记录...
  • Eastmount
  • Eastmount
  • 2014-04-08 01:04
  • 5116

使用TreeView遍历磁盘目录

public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void tre...
  • pandani
  • pandani
  • 2011-10-27 14:35
  • 883

C# 系统应用之通过注册表获取USB使用记录

该文章是“个人电脑历史记录清除软件”项目的系统应用系列文章. 前面已经讲述了如何清除IE浏览器的历史记录、获取Windows最近访问文件记录、清除回收站等功能.现在我需要完成的是删除USB设备上的U盘、手机、移动硬盘等记录,真心觉得这方面资料特别少.这篇文章首先主要讲述了通过注册表获取USB使用记...
  • bruce135lee
  • bruce135lee
  • 2017-11-08 13:45
  • 65
    个人资料
    • 访问:2326229次
    • 积分:21610
    • 等级:
    • 排名:第413名
    • 原创:270篇
    • 转载:10篇
    • 译文:0篇
    • 评论:1651条
    个人博客
    作者:杨秀璋
    学历:本科-北京理工大学
               硕士-北京理工大学
    现任教于贵财财经大学信息学院
    http://www.eastmountyxz.com

    简介:自幼受贵州大山的熏陶,养成了诚实质朴的性格。经过寒窗苦读,考入BIT,为完成自己的教师梦,放弃IT、航天等工作,成为贵财一名大学教师,并想把自己所学所感真心传授给自己的学生,帮助更多陌生人。

    贵州纵美路迢迢,
    为负劳心此一遭。
    收得破书三四本,
    也堪将去教尔曹。

    娜美人生,醉美生活。
    他和她经历风雨,慢慢变老。
    博客专栏
    牛人博客
    最新评论