精华内容
下载资源
问答
  • 怎么获得应用使用记录,比如在一个时间段里都在哪些时候使用了应用
  • 该文章是“个人电脑历史记录清除软件”项目的系统应用系列文章....这篇文章首先主要讲述了通过注册表获取USB使用记录,希望对大家有所帮助.一.注册表基本知识注册表(registry)是Windows系统中一个重要的数据...

    该文章是“个人电脑历史记录清除软件”项目的系统应用系列文章.

    前面已经讲述了如何清除IE浏览器的历史记录、获取Windows最近访问文件记录、清除回收站等功能.现在我需要完成的是删除USB设备上的U盘、手机、移动硬盘等记录,真心觉得这方面资料特别少.这篇文章首先主要讲述了通过注册表获取USB使用记录,希望对大家有所帮助.

    一.注册表基本知识

    注册表(registry)是Windows系统中一个重要的数据库,它用于存储有关应用程序、用户和系统信息.注册表的结构就像一颗树.树的顶级节点(hive)不能添加、修改和删除.如下图所示是Windows注册表的顶级节点:

    (1).HKEY_CURRENT_USER:包含当前登录到Windows的用户配置信息

    (2).HKEY_USERS:包含计算机所有用户的配置信息

    (3).HKEY_LOCAL_MACHINE:包含与计算机相关的配置信息,不论用户是否登录

    (4).HKEY_CLASSES_ROOT:包含将文件类型同程序关联起来的信息及COM组件配置数据

    (5).HKEY_CURRENT_CONFIG:包含本地计算机启动时所使用的硬件描述文件.

    详见百度百科

    二.C#中注册表简单使用

    在前面"C# 系统应用之IE浏览器记录和地址栏输入网址"文章中我已经简单的使用了通过注册表获取地址栏的信息并显示.这里想讲讲注册表常使用的获取内容方法.主要代码如下:

    其中,RegistryKey类(MSDN)表示注册表中的顶级结点,此类是注册表封装.Registry类(MSDN)提供表示Windows注册表中的根项的RegistryKey对象,并提供访问项/值.常用值如下对应的是注册表顶级节点内容.

    上面代码获取IE浏览器地址栏最近输入URL对应的注册表树形路径为:

    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs

    通过Registry.CurrentUser(HKEY_CURRENT_USER)中的OpenSubKey函数检索指定的子项,并指定是否将写访问权限应用于该项.最后通过GetValueNames()获取检索的所有值.函数原型:

    三.注册表如何存储USB信息

    此处查阅多处资料并主要引用《计算机信息获取系统的研究与实现》论文部分:http://cdmd.cnki.com.cn/Article/CDMD-10431-2010236667.htm

    在Windows系统中,当一个USB移动存储设备插入时,就会在注册表中留下痕迹.当移动设备插入计算机时,即插即用管理器PnP(Plug and Play)接受该事件,并且在USB设备的固件(Firewre information)中查询有关该设备的描述信息(厂商、型号、序列号等).当设备被识别后,在注册表中创建一个新的键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR

    在这个键值下,会看到类似下面的结构子键:(该子键代表设备类标示符,用来标识设备的一个特定类)

    Disk&Ven_###&Prod_###&Rev_###

    其中子键中"###"代表区域由PnP管理器依据在USB设备描述符中获取的数据填写.如下图所示

    Disk&Ven_aigo&Prod_Miniking&Rev_8.07是Device class ID

    Q0UKCH37&0是Unique instance ID(UID)

    如果使用UVCView工具可以看见USB设备描述内容,其中的信息都是相互对应的.设备类ID一旦建立,就需要建立一个特定唯一的UID.它可以把具有同一设备类标识的多个存储设备区分.

    四.程序实现获取USB使用信息

    具体代码如下所示,同时希望大家去下载wnt08的代码,很有帮助http://download.csdn.net/detail/lwnt08/3083499

    运行结果如下图所示:

    其中对应的注册表信息如下图所示:

    其中对应的FriendlyName即是输出的“USB名称 aigo Miniking USB Device”,UID序号为"Q0UKCH37".搜索的Service(服务)为disk(磁盘)的选项.

    五.总结与展望

    首先个人感触,这方面的资料真心很少,文章博客也少,所以看起来操作似乎很简单,但真正实现起来还是令人深思的.然后就是其实存储USB记录的还有很多键值.如

    1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB

    该键值中能看到厂商号(VID_)、厂商产品号(PID_),还有LocationInformation(端口号) Port_#0001.Hub_#0005等.

    2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses

    该键值下有两个设备类:{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}{53F5630d-B6BF-11D0-94F2-00A0C91EFB8B},可以通过他们获取USB最后接入系统时间.

    接下来我想要完成的就是如何把这些键值联系起来,似乎要通过Dictionary,同时怎样获取时间,怎样正确删除这些信息.最后希望文章对大家有所帮助,如果有错误或不足之处,还请海涵!最后感谢下面参考资料的一些文章博客和作者.这类资料真心不好找,都是相关的内容而且不错的,有的引用,有的没有,但都不错,也希望这些链接大家能用到.

    (By:Eastmount 2014-4-8 夜1点半 原创CSDNhttp://blog.csdn.net/eastmount/)

    参考资料及相似文章(值得一看):

    1.《计算机信息获取系统的研究与实现》论文讲诉了计算机取证学及USB原理

    http://cdmd.cnki.com.cn/Article/CDMD-10431-2010236667.htm

    2.Tracking USB storage: Analysis ofwindowsartifacts generated by USB storage devices

    英文文章,如何获取USB使用记录的时间及信息

    http://www.sciencedirect.com/science/article/pii/S1742287605000320

    3.用C# 编写USB存储设备使用痕迹检测和删除工具 讲诉了如何删除获取分章节讲解

    http://blog.csdn.net/metaphysis/article/details/18504315

    4.C# 读取注册表获取U盘使用记录

    http://download.csdn.net/detail/lwnt08/3083499

    展开全文
  • 该文章是“个人电脑历史记录清除软件”项目的系统应用系列文章. 前面已经讲述了如何清除...这篇文章首先主要讲述了通过注册表获取USB使用记录,希望对大家有所帮助. 一.注册表基本知识 注册表(registry)是Windo

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

    一.注册表基本知识

    注册表(registry)是Windows系统中一个重要的数据库,它用于存储有关应用程序、用户和系统信息.注册表的结构就像一颗树.树的顶级节点(hive)不能添加、修改和删除.如下图所示是Windows注册表的顶级节点:

    \

    (1).HKEY_CURRENT_USER:包含当前登录到Windows的用户配置信息
    (2).HKEY_USERS:包含计算机所有用户的配置信息
    (3).HKEY_LOCAL_MACHINE:包含与计算机相关的配置信息,不论用户是否登录
    (4).HKEY_CLASSES_ROOT:包含将文件类型同程序关联起来的信息及COM组件配置数据
    (5).HKEY_CURRENT_CONFIG:包含本地计算机启动时所使用的硬件描述文件.
    详见百度百科

    二.C#中注册表简单使用

    在前面"C# 系统应用之IE浏览器记录和地址栏输入网址"文章中我已经简单的使用了通过注册表获取地址栏的信息并显示.这里想讲讲注册表常使用的获取内容方法.主要代码如下:

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //定义注册表顶级节点 其命名空间是using Microsoft.Win32; 
    RegistryKey historykey;; 
    //检索当前用户CurrentUser子项Software\\Microsoft\\Internet Explorer\\typedURLs
    historykey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Internet Explorer\\typedURLs", true); 
    if (historykey != null
            //获取检索的所有值 
            String[] names = historykey.GetValueNames(); 
            foreach (String str in names) 
            
            listBox1.Items.Add(historykey.GetValue(str).ToString()); 
            
    }

    其中,RegistryKey类(MSDN)表示注册表中的顶级结点,此类是注册表封装.Registry类(MSDN)提供表示Windows注册表中的根项的RegistryKey对象,并提供访问项/值.常用值如下对应的是注册表顶级节点内容.

    \

    上面代码获取IE浏览器地址栏最近输入URL对应的注册表树形路径为:
    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
    通过Registry.CurrentUser(HKEY_CURRENT_USER)中的OpenSubKey函数检索指定的子项,并指定是否将写访问权限应用于该项.最后通过GetValueNames()获取检索的所有值.函数原型:

    ?
    1
    2
    3
    4
    public RegistryKey OpenSubKey(
        string name,     //要打开的子项名称或路径
        bool writable    //如果需要项的写访问权限=true
    )

    三.注册表如何存储USB信息

    此处查阅多处资料并主要引用《计算机信息获取系统的研究与实现》论文部分:
    https://cdmd.cnki.com.cn/Article/CDMD-10431-2010236667.htm
    在Windows系统中,当一个USB移动存储设备插入时,就会在注册表中留下痕迹.当移动设备插入计算机时,即插即用管理器PnP(Plug and Play)接受该事件,并且在USB设备的固件(Firewre information)中查询有关该设备的描述信息(厂商、型号、序列号等).当设备被识别后,在注册表中创建一个新的键值:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
    在这个键值下,会看到类似下面的结构子键:(该子键代表设备类标示符,用来标识设备的一个特定类)
    Disk&Ven_###&Prod_###&Rev_###
    其中子键中"###"代表区域由PnP管理器依据在USB设备描述符中获取的数据填写.如下图所示

    \

    Disk&Ven_aigo&Prod_Miniking&Rev_8.07是Device class ID
    Q0UKCH37&0是Unique instance ID(UID)
    如果使用UVCView工具可以看见USB设备描述内容,其中的信息都是相互对应的.设备类ID一旦建立,就需要建立一个特定唯一的UID.它可以把具有同一设备类标识的多个存储设备区分.

    四.程序实现获取USB使用信息

    具体代码如下所示,同时希望大家去下载wnt08的代码,很有帮助https://download.csdn.net/detail/lwnt08/3083499

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    //获取USB使用信息
    private void button1_Click(object sender, EventArgs e)
    {
    //定义注册表顶级节点 其命名空间是using Microsoft.Win32;
    RegistryKey USBKey;
    //检索子项   
    USBKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Enum\USBSTOR", false);
    //检索所有子项USBSTOR下的字符串数组
    foreach (string sub1 in USBKey.GetSubKeyNames())
    {
        RegistryKey sub1key = USBKey.OpenSubKey(sub1, false);
        foreach (string sub2 in sub1key.GetSubKeyNames())
        {
            try
            {
                //打开sub1key的子项
                RegistryKey sub2key = sub1key.OpenSubKey(sub2, false);
                //检索Service=disk(磁盘)值的子项 cdrom(光盘)
                if (sub2key.GetValue("Service", "").Equals("disk"))
                {
                    String Path = "USBSTOR" + "\\" + sub1 + "\\" + sub2;
                    String Name = (string)sub2key.GetValue("FriendlyName", "");
                    richTextBox1.AppendText("USB名称  " + Name + "\r\n");
                    richTextBox1.AppendText("UID标记  " + sub2 + "\r\n");
                    richTextBox1.AppendText("路径信息 " + Path + "\r\n\r\n");
                }
            }
            catch (Exception msg) //异常处理
            {
                MessageBox.Show(msg.Message);
            }
        }
    }

    运行结果如下图所示:

    \

    其中对应的注册表信息如下图所示:

    \

    其中对应的FriendlyName即是输出的“USB名称 aigo Miniking USB Device”,UID序号为"Q0UKCH37".搜索的Service(服务)为disk(磁盘)的选项.

    五.总结与展望

    首先个人感触,这方面的资料真心很少,文章博客也少,所以看起来操作似乎很简单,但真正实现起来还是令人深思的.然后就是其实存储USB记录的还有很多键值.如
    1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
    该键值中能看到厂商号(VID_)、厂商产品号(PID_),还有LocationInformation(端口号) Port_#0001.Hub_#0005等.
    \
    2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
    该键值下有两个设备类:{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}{53F5630d-B6BF-11D0-94F2-00A0C91EFB8B},可以通过他们获取USB最后接入系统时间.
    接下来我想要完成的就是如何把这些键值联系起来,似乎要通过Dictionary,同时怎样获取时间,怎样正确删除这些信息.最后希望文章对大家有所帮助,如果有错误或不足之处,还请海涵!最后感谢下面参考资料的一些文章博客和作者.这类资料真心不好找,都是相关的内容而且不错的,有的引用,有的没有,但都不错,也希望这些链接大家能用到.
    (By:Eastmount 2014-4-8 夜1点半 原创CSDN https://blog.csdn.net/eastmount/)
    参考资料及相似文章(值得一看):
    1.《计算机信息获取系统的研究与实现》论文讲诉了计算机取证学及USB原理
    https://cdmd.cnki.com.cn/Article/CDMD-10431-2010236667.htm
    2.Tracking USB storage: Analysis of windows artifacts generated by USB storage devices
    英文文章,如何获取USB使用记录的时间及信息
    https://www.sciencedirect.com/science/article/pii/S1742287605000320
    3.用C# 编写USB存储设备使用痕迹检测和删除工具 讲诉了如何删除获取分章节讲解
    https://blog.csdn.net/metaphysis/article/details/18504315
    4.C# 读取注册表获取U盘使用记录
    https://download.csdn.net/detail/lwnt08/3083499

    展开全文
  • 这篇文章首先主要讲述了通过注册表获取USB使用记录,希望对大家有所帮助.从五个方面讲解: 一.注册表基本知识 二.C#中注册表简单使用 三.注册表如何存储USB信息 四.程序实现获取USB使用信息 五.总结与展望 希望文章对...

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

    一.注册表基本知识

    注册表(registry)是Windows系统中一个重要的数据库,它用于存储有关应用程序、用户和系统信息.注册表的结构就像一颗树.树的顶级节点(hive)不能添加、修改和删除.如下图所示是Windows注册表的顶级节点:

    (1).HKEY_CURRENT_USER:包含当前登录到Windows的用户配置信息
    (2).HKEY_USERS:包含计算机所有用户的配置信息
    (3).HKEY_LOCAL_MACHINE:包含与计算机相关的配置信息,不论用户是否登录
    (4).HKEY_CLASSES_ROOT:包含将文件类型同程序关联起来的信息及COM组件配置数据
    (5).HKEY_CURRENT_CONFIG:包含本地计算机启动时所使用的硬件描述文件.

    详见百度百科

    二.C#中注册表简单使用

    在前面"C# 系统应用之IE浏览器记录和地址栏输入网址"文章中我已经简单的使用了通过注册表获取地址栏的信息并显示.这里想讲讲注册表常使用的获取内容方法.主要代码如下:

    //定义注册表顶级节点 其命名空间是using Microsoft.Win32;  
    RegistryKey historykey;;  
    //检索当前用户CurrentUser子项Software\\Microsoft\\Internet Explorer\\typedURLs
    historykey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Internet Explorer\\typedURLs", true);  
    if (historykey != null)  
    {  
            //获取检索的所有值  
            String[] names = historykey.GetValueNames();  
            foreach (String str in names)  
            {  
    		listBox1.Items.Add(historykey.GetValue(str).ToString());  
            }  
    } 

    其中,RegistryKey类(MSDN)表示注册表中的顶级结点,此类是注册表封装.Registry类(MSDN)提供表示Windows注册表中的根项的RegistryKey对象,并提供访问项/值.常用值如下对应的是注册表顶级节点内容.

    上面代码获取IE浏览器地址栏最近输入URL对应的注册表树形路径为:
    HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
    通过Registry.CurrentUser(HKEY_CURRENT_USER)中的OpenSubKey函数检索指定的子项,并指定是否将写访问权限应用于该项.最后通过GetValueNames()获取检索的所有值.函数原型:

    public RegistryKey OpenSubKey(
    	string name,     //要打开的子项名称或路径
    	bool writable    //如果需要项的写访问权限=true
    )

    三.注册表如何存储USB信息

    此处查阅多处资料并主要引用《计算机信息获取系统的研究与实现》论文部分:
    http://cdmd.cnki.com.cn/Article/CDMD-10431-2010236667.htm
    在Windows系统中,当一个USB移动存储设备插入时,就会在注册表中留下痕迹.当移动设备插入计算机时,即插即用管理器PnP(Plug and Play)接受该事件,并且在USB设备的固件(Firewre information)中查询有关该设备的描述信息(厂商、型号、序列号等).当设备被识别后,在注册表中创建一个新的键值:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
    在这个键值下,会看到类似下面的结构子键:(该子键代表设备类标示符,用来标识设备的一个特定类)
    Disk&Ven_###&Prod_###&Rev_###

    其中子键中"###"代表区域由PnP管理器依据在USB设备描述符中获取的数据填写.如下图所示

    Disk&Ven_aigo&Prod_Miniking&Rev_8.07是Device class ID
    Q0UKCH37&0是Unique instance ID(UID)

    如果使用UVCView工具可以看见USB设备描述内容,其中的信息都是相互对应的.设备类ID一旦建立,就需要建立一个特定唯一的UID.它可以把具有同一设备类标识的多个存储设备区分.

    四.程序实现获取USB使用信息

     具体代码如下所示,同时希望大家去下载wnt08的代码,很有帮助http://download.csdn.net/detail/lwnt08/3083499

    //获取USB使用信息
    private void button1_Click(object sender, EventArgs e)
    {
    //定义注册表顶级节点 其命名空间是using Microsoft.Win32;
    RegistryKey USBKey;
    //检索子项    
    USBKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Enum\USBSTOR", false);
    //检索所有子项USBSTOR下的字符串数组
    foreach (string sub1 in USBKey.GetSubKeyNames())
    {
        RegistryKey sub1key = USBKey.OpenSubKey(sub1, false);
        foreach (string sub2 in sub1key.GetSubKeyNames())
        {
            try
            {
                //打开sub1key的子项
                RegistryKey sub2key = sub1key.OpenSubKey(sub2, false);
                //检索Service=disk(磁盘)值的子项 cdrom(光盘)
                if (sub2key.GetValue("Service", "").Equals("disk"))
                {
                    String Path = "USBSTOR" + "\\" + sub1 + "\\" + sub2;
                    String Name = (string)sub2key.GetValue("FriendlyName", "");
                    richTextBox1.AppendText("USB名称  " + Name + "\r\n");
                    richTextBox1.AppendText("UID标记  " + sub2 + "\r\n");
                    richTextBox1.AppendText("路径信息 " + Path + "\r\n\r\n");
                }
            }
            catch (Exception msg) //异常处理
            {
                MessageBox.Show(msg.Message);
            }
        }
    }

    运行结果如下图所示:

    其中对应的注册表信息如下图所示:

    其中对应的FriendlyName即是输出的“USB名称 aigo Miniking USB Device”,UID序号为"Q0UKCH37".搜索的Service(服务)为disk(磁盘)的选项.

    五.总结与展望

    首先个人感触,这方面的资料真心很少,文章博客也少,所以看起来操作似乎很简单,但真正实现起来还是令人深思的.然后就是其实存储USB记录的还有很多键值.如
    1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
    该键值中能看到厂商号(VID_)、厂商产品号(PID_),还有LocationInformation(端口号) Port_#0001.Hub_#0005等.

     


    2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
    该键值下有两个设备类:{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}{53F5630d-B6BF-11D0-94F2-00A0C91EFB8B},可以通过他们获取USB最后接入系统时间.
    接下来我想要完成的就是如何把这些键值联系起来,似乎要通过Dictionary<string, UInfo>,同时怎样获取时间,怎样正确删除这些信息.最后希望文章对大家有所帮助,如果有错误或不足之处,还请海涵!最后感谢下面参考资料的一些文章博客和作者.这类资料真心不好找,都是相关的内容而且不错的,有的引用,有的没有,但都不错,也希望这些链接大家能用到.

    (By:Eastmount 2014-4-8 夜1点半 原创CSDN http://blog.csdn.net/eastmount/)
    参考资料及相似文章(值得一看):
    1.《计算机信息获取系统的研究与实现》论文讲诉了计算机取证学及USB原理
    http://cdmd.cnki.com.cn/Article/CDMD-10431-2010236667.htm
    2.Tracking USB storage: Analysis of windows artifacts generated by USB storage devices
    英文文章,如何获取USB使用记录的时间及信息

    http://www.sciencedirect.com/science/article/pii/S1742287605000320
    3.用C# 编写USB存储设备使用痕迹检测和删除工具 讲诉了如何删除获取分章节讲解
    http://blog.csdn.net/metaphysis/article/details/18504315
    4.C# 读取注册表获取U盘使用记录
    http://download.csdn.net/detail/lwnt08/3083499

    展开全文
  • 本文就主要叙述通过C#实现获取Recent中使用的文件和文件夹.通过讲述Windows最近历史记录,ShortCut快捷追踪Recent中文件的原始路径,并结合学习Level Up的博主代码实现获取Windows最近浏览的文件和文件夹.希望文章对...

    由于毕业设计项目需要删除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)

    展开全文
  • 资源主要是结合博客文章:http://blog.csdn.net/eastmount/article/details/18474655主要讲述使用C# 系统应用获取Windows最近使用记录Recent,通过自定义类函数实现获取Recent快捷键的原始存放路径并显示在控件...
  • 使用协议缓冲区接收远程电池电量并显示电压和使用情况以及充电历史记录的当前和历史值的Android应用程序。 onStart和onResume ModMon将加载任何现有模块并获取包的最新数据 按下+按钮,它将要求提供新包装的信息。...
  • 大声召唤师法术计时器 该应用程序使用防暴游戏API获取实时游戏信息,并使用GUI或游戏中的/ note功能让敌人的召唤师咒语花费时间
  • Android应用开发中不可避免地会发生崩溃,特别是在用户使用过程中,一些特定场景的偶然概率的crash会通常让开发者抓狂。幸运的是Android提供了处理这类问题的方法,当App Crash时,我们可以记录下Crash的原因或者是...
  • 您可以自由使用此软件包,但是如果将其用于您的生产环境,我们非常感谢您从家乡寄给我们一张明信片,其中提及您使用的是哪个软件包。 我们的地址是:Spatie,Kruikstraat 22,2018安特卫普,比利时。 我们将所有...
  • RunningTracker:一个使用html,css和javascript构建的应用程序,用于记录每日,每天针对英里目标运行的英里数,并获取每周平均运行距离
  • 首先获取程序当前目录 QString qsAppDir = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).first(); QString qsTimeFile = qsAppDir + "time.dat"; 其中time.dat用于存储qt...
  • Unity中使用Xcode制作的静态库获取手机内存 知识记录 如何使用Xcode制作一个静态库 Unity中如何调用Xcode的静态库 将Unity项目正确运行在手机 Xcode制作静态库 1. 新建Xcode工程Static Library 2. 修改静态库...
  • MySQL中获取当前查询的总记录数,适用于分页等应用 通常在MySQL中获取记录总数都会使用SELECT COUNT(*) FROM tblName之类的语句 这类语句的缺点是:记录集还需要单独的查询来获取,相当于查询两次 我推荐...
  • 据外媒9to5google报道,谷歌近日宣布将限制第三方访问用户数据,非法获取短信、通话记录等信息的Play商店应用将被下架。自去年谷歌爆出隐患泄露事件之后,谷歌便着手对用户数据进行一系列保护,比如限制第三方应用...
  • 【Demo 记录获取栈顶APP所在的应用包名 –getRunningTasks 弃用的处理方案 –分两种情况处理, 低于5.0:使用getRunningTasks 高于5.0:使用,PACKAGE_USAGE_STATE 查看使用情况的这个权限 demo 场景:使用...
  • 包括 高德 key 的申请,应用签名sha1获取(android端),ios端见 amap_location详细文档,这边主要讲android端,因为ios端很简单。ios端:android端(重点)第一步:flutter 应用签名 sha1 的获取1)如下图点击右上角 ...
  • 在本指南中,我们将重点介绍Winston的日志包,这是一个极其通用的日志库,是基于NPM下载统计信息,可用于Node.js应用程序的日志记录解决方案。Winston的功能包括支持多个存储选项和日志级别,日志查询,甚至是内置的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,339
精华内容 1,335
关键字:

获取应用使用记录