Каталоги, которые вряд ли содержат исполняемые файлы пользователя ('.exes') - PullRequest
2 голосов
/ 10 октября 2010

Я пишу клиент-серверное приложение laucher.

Администратор со стороны сервера выбирает исполняемые файлы («.exes») из списка и добавляет их в короткий список приложений, которые обычные пользователи могут запускать на клиенте. Чтобы скомпилировать этот список, мое клиентское приложение будет выполнять рекурсивный поиск во всех папках системы на наличие файлов exe и отправлять этот список на сервер через wcf.

Чтобы сэкономить время поиска и сохранить список коротким, я бы хотел избежать поиска в папках, которые не ВЕРОЯТНО содержат «.exes», которые пользователи-пользователи должны запускать напрямую.

Примеры (я думаю):

% windir% \ WinSxS - Windows Side-by-Side - используется для хранения версий компонентов Windows, созданных для уменьшения проблем конфигурации с библиотеками Dynamic Link.

% windir% \ installer - используется для хранения информации об установке для установленных программ

C: \ MSOCache - локальный источник установки MS Office

Большинство скрытых папок

Какие еще папки следует избегать при поиске и что они могут содержать?

Меня интересует WinXP / WinVista / Win7.

EDIT:

Время поиска - не самый важный фактор. Очень важно не исключать exe-файлы, которые могут понадобиться пользователю для запуска И, чтобы исключить exe-файлы, такие как:

C: \ Windows \ WinSxS \ x86_Microsoft-окна-x..rtificateenrollment_31bf3856ad364e35_6.1.7600.20520_none_f43289dd08ebec20 \ CertEnrollCtrl.exe

, которые никогда не предназначались для непосредственного запуска пользователем.

Ответы [ 2 ]

2 голосов
/ 10 октября 2010

Поскольку любой эвристический подход, относящийся к «вероятному», будет нуждаться в способности добавлять дополнительные элементы для выявления случаев, которые считаются «маловероятными», но которые действительно важны, вы не можете быть «неправильным» как таковым, просто не «идеальным».

Имея это в виду, я бы использовал противоположный подход и сконцентрировался на тех, которые могут иметь исполняемые файлы.

  1. Пройти через каталоги, содержащиеся в каталоге% ProgramFiles% указывает на.
  2. Просмотрите все другие каталоги, упомянутые системной переменной% Path% (разделенные точкой с запятой), но не используйте ее.
  3. Ищите ярлыки на рабочих столах, запускайте меню и папки быстрого запуска.

Как правило, можно ожидать, что первый найдет исполняемые файлы, используемые людьми, выбирающими исполняемые файлы из меню «Пуск», и значки, а второй найдет исполняемые файлы, используемые из командной строки и системой. Между ними вы найдете подавляющее большинство исполняемых файлов в системе с относительно небольшим количеством потраченных впустую проверок каталогов.

0 голосов
/ 10 октября 2010

Как часто вы собираетесь запускать эту программу?Не похоже, что это займет очень много времени, чтобы просто просканировать весь диск на предмет всех исполняемых файлов.У меня есть диск объемом в один гигабайт на моей машине для разработки, и «dir / b / s * .exe» занимает всего минуту или две.И вполне вероятно, что на моей машине для разработки гораздо больше файлов, чем на компьютере обычного пользователя.

Если подумать, ваша клиентская программа может выполнить эту команду, захватить вывод и отправить егосервер.Возможно, после небольшой предварительной обработки.

Моя точка зрения заключается в том, что не должно иметь значения, если бы процесс занял целых пять минут, если он выполняется только один раз (или очень редко) на каждой машине.Преимущество в том, что вы не пропустите ни одного исполняемого файла таким образом.

...