Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60904
  • 博文数量: 12
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-06 19:21
文章分类

全部博文(12)

文章存档

2008年(12)

我的朋友

分类: WINDOWS

2008-12-17 19:36:17

今天在使用UEStudio的多文件搜索时,发现UE无法搜索出我指定的文件夹下的文件中的任何内容。于是我使用Windows的搜索对该文件夹进行内容搜索,结果发现竟然连Windows也无法搜索出该文件夹下的任何内容。于是在网上搜索,看是否有高人解决这种奇怪的问题,结果发现了下面的这篇文章。因此转载过来。
   不过UEStudio的问题还没有解决。奇怪的是如果将该文件夹重命名或更换位置,UE都能正确搜索。

windows XP中文件内容搜索仅能针对部分类型文件

症状
当您使用“文件中的一个字或词组”搜索条件搜索包含文本的文件时,搜索结果中可能没有那些包含您所指定的文本的文件。例如,.log、.dll、.js、.asp、.xml、.xsl、.hta、.css、.wsh、.cpp、.c 或 .h 文件或没有文件扩展名的文件即使含有您所指定的文本,也可能不会出现在搜索结果中。即使您在“全部或部分文件名”框中指定了文件名或文件类型,也可能会发生该问题。
原因
对于包含您所指定的文本的文件类型,没有注册筛选器组件;或者,筛选器组件忽略了您所指定的文本。要在使用“文件中的一个字或词组”搜索条件时让搜索结果中包括某个文件类型,必须为该文件类型注册有效的筛选器组件。Windows XP 只为与常见文档类型相关的文件类型注册了筛选器组件。Windows XP 中的标准筛选器组件包括:   
    Mimefilt.dll:筛选多用途 Internet 邮件扩展 (MIME) 文件
    Nlhtml.dll:筛选 HTML 3.0 或更低版本的文件
    Offfilt.dll:筛选 Microsoft Office 文件(Microsoft Word、Microsoft Excel 和 Microsoft PowerPoint)
    Query.dll:筛选纯文本文件(默认筛选器)和二进制文件(空筛选器)
由于文本的格式或内容方面的原因,筛选器组件可能会忽略某些文本。例如,HTML 3.0 筛选器 (Nlhtml.dll) 会忽略 HTML 文件(例如,扩展名为 .htm 或 .asp 的文件)的注释中包含的文本,因为在浏览器中打开这类文件时未显示此文本。



Microsoft Windows 2000 和更低版本的 Windows 会在所有文件中搜索您指定的内容。Windows XP 并不搜索所有文件,这是为了提高搜索性能和避免得到无关结果。无论您在搜索时是否使用索引服务,搜索操作都是这样进行。
解决方案
方法 1
要为其他文件类型解决这一问题,请安装能够为您要搜索的文件类型注册筛选器的程序。如果没有可提供筛选器的程序,可以对文件类型使用纯文本筛选器。为此,请在 HKEY_CLASSES_ROOT 中的文件类型项下添加 PersistentHandler 项,并将它的 (Default) 字符值名称设置为以下值:   
{5e941d80-bf96-11cd-b579-08002b30bfeb}
警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。

例如,要对 .zzz 文件使用文本筛选器提供程序,则应存在以下注册表设置:   
HKEY_CLASSES_ROOT\.zzz\PersistentHandler\(Default) = {5e941d80-bf96-11cd-b579-08002b30bfeb}
将该值添加到注册表中以后,必须注销然后重新登录才能使更改生效。



注意:   
    纯文本筛选器并非适用于所有文件类型。如果为文件类型添加纯文本筛选器后无效,请与该文件类型的供应商联系,以获取该文件类型的筛选器。
    

HTML 3.0 筛选器 (Nlhtml.dll) 会忽略在 HTML 文件(例如,扩展名为 .htm 或 .asp 的文件)的注释中包含的文本。要搜索在 HTML 文件的注释中包含的文本,请使用纯文本筛选器或方法 2 中介绍的方法。
方法 2

要将 Windows XP 配置为能够搜索所有文件(无论文件类型是什么),请获取最新的 Windows XP Service Pack,然后打开“含有未知扩展名的索引文件类型”选项。



如果您使用该方法,Windows XP 会在所有文件类型中搜索您指定的文本。这可能会影响搜索功能的性能。为此,请按照下列步骤操作:  
1.     单击“开始”,然后单击“搜索”(或指向“搜索”,然后单击“文件或文件夹”)。
2.     单击“改变首选项”,然后单击“使用制作索引服务(使本地搜索更快)”。
3.     单击“改变制作索引服务设置(高级)”。请注意,您不必打开索引服务。
4.     在工具栏上,单击“显示/隐藏控制台树”。
5.     在左窗格中,右键单击“本机索引服务”,然后单击“属性”。
6.     在“生成”选项卡上,单击以选中“含有未知扩展名的索引文件”复选框,然后单击“确定”。
7.     关闭索引服务控制台。
警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。

网络管理员可以通过修改注册表来配置此设置。为此,请在以下注册表项中将“FilterFilesWithUnknownExtensions”DWORD 值设置为 1:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex
XP系统的搜索功能,搜索包含某个字符的文件时,  
   为“提高效率”,取消了对所有文件类型中字符的搜索支持,  
   只有部分文件类型中的字符可以被搜索。  
   尽管309447补丁或SP1里增加了对很多文件类型中字符的搜索支持,  
   ()  
   但还是有些文件类型(比如difficult提及的java文件)不能被搜索。  
   
   Using    the    "A    Word    or    Phrase    in    the    File"    Search    Criterion  
   May    Not    Work  
  
   
   简单的总结一下里面提及的两个方法,供参考:  
   
   方法一:如果某个文件类型不支持搜索其中的字符,可以  
   将下述复制到记事本文件(不包括横线),  
   ---------------------------------------  
   Windows    Registry    Editor    Version    5.00  
   
   [HKEY_CLASSES_ROOT\.***\PersistentHandler]  
   @="{5e941d80-bf96-11cd-b579-08002b30bfeb}"  
   
   ---------------------------------------  
   其中,***代表文件的扩展名,需要修改(编辑)成相应的文件扩展  
   名。  
   编辑后另存为reg类型文件,(文件名称随便取),  
   双击此文件,导入注册表即可搜索相应扩展名文件中包含的字符。  
   
   方法二:运行regedit,编辑注册表  
   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex  
   右侧FilterFilesWithUnknownExtensions子键(REG_DEWORD类型)  
   的键值改为1
 
阅读(4061) | 评论(0) | 转发(0) |
0

上一篇:使用VSS标签

下一篇:Delphi线程基础知识

给主人留下些什么吧!~~