Один мой знакомый попросил написать маленькую программку, которая бы размещалась на флешке и при открытии ее, копировала некоторые файлы на эту флешку. За один субботний вечер была написана эта программка.
На все мои вопросы, "зачем тебе это надо" и "помогла ли тебе, в твоих шпионских делах, программа" он упорно молчит.
Программа предназначена для скрытого копирования файлов и поддержания их в синхронизированном состоянии с оригиналом. Запуск программы обеспечивается "autorun.inf" файлом размешенном в корневой директории сменного накопителя или подключаемого жесткого диска. Таким образом, если в системе отключена функция "AutoRun" ([HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]"NoDriveTypeAutoRun"=dword:000000ff), запуск программы не будет выполняться.
# Файл конфигурации должен находиться в одной директории с программой и
# иметь название 'duplicate.lst'. Хорошей идеей использовать в качестве
# файла конфигурации этот файл, продолжив его списком копируемых файлов и
# сканируемых директорий. Все строки в файле 'duplicate.lst' начинающиеся
# с символа '#' являются комментариями и игнорируются при разборе файла
# конфигурации.
#
# Список параметров передаваемых через командную строку:
# --enable-log - записывать информацию о ходе своей работы.
# Log-файл создается в одной директории с
# программой под именем 'duplicate.log'.
# --disable-explorer - не запускать 'explorer'. В основном используется
# для отладки приложения через отладчик.
#
# Список поддерживаемых модификаторов:
# c= - копировать
# C= - копировать рекурсивно
# l= - отправить в log список файлов
# L= - отправить в log рекурсивный список файлов
# d= - отправить в log список дисков установленных в системе
# если модификатора нет то подразумевается 'c='.
#
# Так же в конце имени файла можно использовать два символа подстановки:
# * - соответствует любой строке символов а так же пустой строке
# ? - соответствует любому одиночному символу
#
# Примеры:
# d:\dir\*.doc - копировать все документы Word
# d:\dir2\file?.tx? - копировать файлы по шаблону (например 'file2.txt', 'file_.tx9')
# d:\dir\file.txt - копировать файл 'file.txt'
# c=d:\dir\file.txt - копировать файл 'file.txt'
# C=c:\dir - копировать рекурсивно каталог 'dir'
# C=c:\dir\ - копировать рекурсивно каталог 'dir'
# l=c:\катал1 - отправить в log содержимое каталога 'катал1'
# l=c:\катал1\ - отправить в log содержимое каталога 'катал1'
# L=c:\катал1 - отправить в log содержимое каталога 'катал1' и его подкаталогов
# d= - отправить в log список дисков установленных в системе
#
Программа может быть полезна в качестве примера рекурсивного обхода каталога и его подкаталогов, а так же в способе определения достоверности копии файла на основе временных меток.