Существующий (основанный на Интернете) проект, над которым я работаю, использует данные клиента и сохраняет отчеты, используя имя клиента в качестве имени файла.К сожалению, он никогда не фильтровал это имя клиента, поэтому кто-то вводил имена клиентов, содержащие двоеточие (например, "workshop: alex") для целей тестирования.Это приводит к мастерской с именем файла: alex.pdf, которая вполне допустима в системах NTFS.(Поскольку он создает файл с именем «Мастерская», который содержит альтернативный поток данных с именем «alex.pdf». Поскольку приложение также сохраняло имена файлов, у него не было проблем с их повторным чтением, поскольку оно просто ссылалось на тот же ADS., никто не заметил эту проблему ...Однако недавно я начал работать над этим проектом, и его необходимо перенести на 64-разрядную версию Windows 7 с IIS 7. И вдруг сайт больше не работает с этими файлами ADS!Мне не потребовалось много времени, чтобы найти причину и понять, почему она никогда не подводила в прошлом.(и я также проклинал предыдущих разработчиков, которые никогда не проверяли это!) Но теперь мне интересно, почему это не работает в Windows 7 ... Так, кто-нибудь знает?У меня есть решение, кстати!Имя файла теперь отфильтровано, что решает проблему.Мне просто интересно, почему.Что может вызвать эти проблемы на более новых версиях Windows?О приложении: это смесь локальной установки IIS в сочетании с клиентским приложением WIN32.По сути, решение для создания отчетов было разработано как веб-приложение, и было создано настольное приложение, которое ранее использовало Word для создания отчетов.Некоторые менеджеры решили, что было бы неплохо, если бы настольное приложение вместо этого использовало логику веб-приложения для генерации отчетов.И я признаю: это была не очень яркая идея ...В результате у каждого пользователя в системе будет запущен IIS с веб-приложением, в то время как у него будет приложение для настольного компьютера на том же компьютере.Чтобы они общались, с помощью C # была создана отдельная веб-служба, в то время как веб-приложение было построено на классическом ASP, а настольное приложение на Delphi.Приложение Desktop отправит данные через локальный веб-сервис в базу данных, а затем войдет в локальное веб-приложение, чтобы сообщить ему о создании отчета, который затем будет загружен ...Где что-то идет не так в этом адском коде, не очень понятно.Но поскольку имя файла основано на данных из настольного приложения, которое иногда содержит двоеточие, оно иногда создает ADS вместо обычного имени файла.В версиях Windows до Windows 7 это, казалось, работало правильно.Файлы были записаны, и IIS также будет передавать их в настольное приложение в виде файлов PDF.(И оттуда вы можете «сохранить как», используя обычное имя файла.Это приложение работает только на Windows 7 (64-разрядная версия), поскольку оно может записывать файлы в поток ADS, когда к данным добавляется двоеточие, но при этом оно не может получить их снова.Хотя теперь мы отфильтровываем двоеточия по сгенерированным именам файлов, я просто хотел бы узнать возможные причины этой проблемы.Так что это вопрос из любопытства ...