首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 记录电脑操作记录解决办法

2012-04-28 
C# 记录电脑操作记录大家好,目前需要实现一个记录电脑操作的功能,当软件运行后,自动将对电脑的所有操作记

C# 记录电脑操作记录
大家好,目前需要实现一个记录电脑操作的功能,当软件运行后,自动将对电脑的所有操作记录到txt到,比如删除文件、创建文件、移动文件等等,hook只能实现鼠标动到哪里,按了什么键,比较麻烦,C# FileSystemWatcher也是指定文件夹进行检测,无法对所有文件夹进行监测。大家有什么好想法没?

[解决办法]
hook文件操作的API
[解决办法]

C# code
 private System.IO.FileSystemWatcher watcher = null;  //Button1的点击事件处理 private void Button1_Click(object sender, System.EventArgs e) {     if (watcher != null) return;      watcher = new System.IO.FileSystemWatcher();     //指定监测的路径     watcher.Path = @"C:\My Documents";     //监测最终存取时间,最终更新时间,文件和文件夹名的变更     watcher.NotifyFilter =         (System.IO.NotifyFilters.LastAccess          | System.IO.NotifyFilters.LastWrite         | System.IO.NotifyFilters.FileName          | System.IO.NotifyFilters.DirectoryName);     //监测所有的文件     watcher.Filter = "";     //配置UI的线程     //没有必要使用控制台应用程序     watcher.SynchronizingObject = this;      //事件处理的追加     watcher.Changed += new System.IO.FileSystemEventHandler(watcher_Changed);     watcher.Created += new System.IO.FileSystemEventHandler(watcher_Changed);     watcher.Deleted += new System.IO.FileSystemEventHandler(watcher_Changed);     watcher.Renamed += new System.IO.RenamedEventHandler(watcher_Renamed);      //开始监测     watcher.EnableRaisingEvents = true;     Console.WriteLine("开始监测"); }  //Button2的点击事件处理 private void Button2_Click(object sender, System.EventArgs e) {     //结束监测     watcher.EnableRaisingEvents = false;     watcher.Dispose();     watcher = null;     Console.WriteLine("结束监测"); }  //事件处理 private void watcher_Changed(System.Object source,     System.IO.FileSystemEventArgs e) {     switch (e.ChangeType)     {         case System.IO.WatcherChangeTypes.Changed:             Console.WriteLine(                 "文件「" + e.FullPath + "」被改变了。");             break;         case System.IO.WatcherChangeTypes.Created:             Console.WriteLine(                 "文件「" + e.FullPath + "」被做成了。");             break;         case System.IO.WatcherChangeTypes.Deleted:             Console.WriteLine(                 "文件「" + e.FullPath + "」被删除了。");             break;     } }  private void watcher_Renamed(System.Object source,      System.IO.RenamedEventArgs e) {     Console.WriteLine(         "文件 「" + e.FullPath + "」的名字被改变了。"); }
[解决办法]
写的不错
up
用ThreadPool 应该比List<Thread>方式管理线程对象好一些吧

热点排行