不太可能包含用户可执行文件的目录('.exes')

时间:2010-10-10 13:38:03

标签: c# windows-7 windows-vista windows-xp

我正在编写客户端 - 服务器laucher应用程序。

管理员将从服务器端从列表中选择可执行文件('.exes'),并将这些文件添加到标准用户可以在客户端上运行的应用程序的简短列表中。 为了压缩这个列表,我的客户端应用程序将通过wcf清除搜索系统中的所有文件夹,并将此列表发送到服务器。

为了节省搜索时间并保持列表简短,我希望避免搜索非 LIKELY 的文件夹,以包含人类用户想要直接运行的“.exes”。

示例(我认为):

%windir%\ WinSxS - Windows并排 - 用于存储构建的Windows组件版本,以减少动态链接库的配置问题。

%windir%\ installer - 用于存储已安装程序的安装信息

C:\ MSOCache - MS Office本地安装源

大多数隐藏文件夹

我应该避免搜索哪些其他文件夹以及它们可能包含哪些内容?

我对WinXP / WinVista / Win7感兴趣。

修改

搜索时间不是最重要的因素。 非常重要的是不要排除用户可能需要运行的exes以及排除exes,例如:

C:\的Windows \ WINSXS \ X86_microsoft窗口-x..rtificateenrollment_31bf3856ad364e35_6.1.7600.20520_none_f43289dd08ebec20 \ CertEnrollCtrl.exe

从未打算由用户直接发布。

2 个答案:

答案 0 :(得分:2)

由于处理“可能”的任何启发式方法都需要能够添加更多项目以捕获被认为“不太可能”但实际上非常重要的案例,因此您不能“错误”,只是不“完美”。

考虑到这一点,我会采取相反的方法,专注于那些可能具有可执行文件的方法。

  1. 通过目录%ProgramFiles%中包含的目录进行递归 指向。
  2. 查看%Path%系统变量(分号分隔)提到的所有其他目录,但不要递归它。
  3. 在桌面,开始菜单和快速启动文件夹上查找快捷方式。
  4. 通常,人们会期望前者找到人们从开始菜单和图标中选择可执行文件所使用的可执行文件,并且第二个查找从命令行和系统中使用的可执行文件。在两者之间,你会发现系统上的绝大多数可执行文件都有相对较少的浪费目录检查。

答案 1 :(得分:0)

你多久会运行一次这个程序?看起来只需扫描整个驱动器以获取所有可执行文件就不会花费很长时间。我的开发机器上有一个1 GB的驱动器,“dir / b / s * .exe”只需要一两分钟。而且我的开发机器很可能比普通用户的计算机上有更多的文件。

想想看,您的客户端程序可以执行该命令,捕获输出并将其发送到服务器。也许经过一些预处理后。

我的观点是,如果每个机器只进行一次(或很少),那么整个过程需要花费整整五分钟并不重要。好处是你不会错过任何可执行文件。