您的位置:首页 > 编程语言 > C#

本机电脑搜索,类似Everything

2016-03-17 14:29 519 查看
升级到了win10后,搜索变的很垃圾,Cortana根本靠不住,每次想搜个什么东西,都跑到网页上,我只不过想简单的搜一下我电脑上的文件而已。后来我停用了Cortana,然后win10好像自动还在给文件做索引,每次重建索引搞到一半就停了,还死机了几次,不建索引找个文件慢的要死。总而言之,我受不了了!

后来在网上找到了Everything这个应用,很好很强大,比windows自带的搜索还方便。好像原理就是通过NTFS的系统日志来查找文件,速度快的要死~!我被征服了~!

随后在工作中有个任务是通过excel中的文件名在一台电脑上去找对应的所有文件,然后找到最新的版本的文件,再将文件以附件的形式插入到对应的excel行中,有5K左右的文件量,肯定不能人工来进行了,我就想到了网上有没有类似Everything的代码,还真的找到了~!

附网址:http://everythingsz.codeplex.com/

感谢前人的努力,让我们的效率大大提升。

就我的项目而言:

将PInvoke.dll、QueryEngine.dll、UsnOperation.dll这三个库拷出来,放在同一个文件夹中,在项目中引用QueryEngine.dll。

在软件中定义 List<FileAndDirectoryEntry> entries;

在formload的时候entries = QueryEngine.Engine.GetAllFilesAndDirectories();这个就直接将所有的文件都记录下来了,放在entries中了,

定义变量fileName;这个就是需要查找的文件名称,

然后利用linq语句: var filteredResult = this.entries

                    .Where(f => f.FileName.ToUpper().Contains(fileName))

                    .OrderBy(f => f.FileName)

                    .ToList();

返回的就是找到的所有的文件,filteredResult每个item中的FullFileName就是每个文件的完整路径。

太简单,太方便了~

还有个忘记说地方,这个软件必须使用管理员权限~!管理员权限~!管理员权限~!

在项目属性的应用程序中,资源,图标和清单,清单中增加"Properties\app.manifest",将下载的源代码中的这个文件拷贝到自己项目的对应位置要。

或者其他方式也都可以,主要就是要管理员权限~!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Everything c#