none
Приклад в NT 6.1 "держит" файлы. RRS feed

  • Вопрос

  • Здравствуйте господа.
    В одной организации передо мной стоит задача миграции всего технологического ППО (местные самописные программы/скрипты) с систем на базе 2000/ХР на win7/win2k8.

    В настоящий момент столкнулся с описанной в заголовке проблемой.

    Более подробно:
    Имеются две программулины, выполняющие по сути смежные функции - переносят файлы с сетевого диска на локальный, раскладывая их по соответствующим подкаталогам, а также в обратном направлении.
    Одна программа написана на делфях и использует для переноса файлов SHFileOperation Function.
    Вторая "программа" - VBS-ный скрипт, который вызывается из батника с получением от него параметров (как то - тип файлов и имена). Сам батник тоже вызывается другой софтиной. Исполнение скрипта происходит с помощью wscript.exe. Перенос осуществляется с помощью CreateObject.movefile

    Как видите - софтины вроде разные, и методы используют разные, и вроде как взаимосвязи быть никакой не должно - но! после каждого перенесенного файла (будь он хоть 1 кБ) происходит зависание на пару минут

    Какие особенности:
    -при ручном переносе (explorer/far/total) зависаний не наблюдается.

    -зависание происходит только при переносе с сети на диск. в обратном направлении - всё прекрасно.

    -тестирование проводил в следующих конфигурациях (клиент--сервер): win2k8r2--win2k3, win2k8r2--win2k8r2, win7--win2k3, win7--win2k8r2. Ситуация везде идентичная.

    -настройки безопасности на всех описанных узлах - стандартные. машины были в домене, выводились из домена, подвергались переустановке ОС - всё одинакого.

    - состояние логов - девственно чистое. Т.е. ни ошибок ОС, ни ошибок софта ни при запуске машин, ни при исполнении программ - не наблюдается.

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

    Ну и самое интересное (и для меня вообще непонятное):
    -как я уже описал функционал софта на vbs - юзерский софт запускает батник, передавая ему несколько параметров, тот в свою очередь присваивает локальным переменным полученные "сверху" значения и запускает vbs, передавая ему эти самые параметры.
    так вот если я запускаю этот же vbs, жестко задав ему значения этих самых параметров (присваиваю значения прямо в коде) - всё отлично. если делаю тоже самое в батнике - тоже всё отлично. а вот если параметры приходят в батник из приклада - то всё... висим
    (Само собой во всех случаях запуск всех програм происходит от имени одного и того же юзера и одной и той же разрядности. Т.е. процеслоге всегда висит процесс wscript.exe*32 запущенный от одной и той же учетки).


    Ну и самое сладкое - было как раз сегодня ночью. В очередной раз осуществляю тестовый запуск (пытался запустить скрипт из другого места), ловлю зависон на файле в пару килобайт, рублю процессы чтобы не терять время (тот, с которого был вызван батник и wscript.exe*32), решаю перенести файл вручную фаром - и ловлю зависон в фаре. Через пару минут отвисает, файл перенесен. Переношу обратно - всё нормально. Повторяю перенос с сети - опять висим..

    Перезагружаю машину - повторяю попытку переноса файла фаром - висим при переносе из сети, и не висим при переносе в сеть.

    Снимаю галку в параметрах фара "использовать системную функцию копирования" - проблемы исчезают. Ставлю назад - появляются.

    Перезагружаю машину, отключаю сетевые адаптеры, удаляю все параметры сетевых подключений, включаю всё назад - с фаром та же беда

    А потом решаю перенести этот файл в другое место (просто на каталог выше) - проблема исчезает. Кидаю файл назад - нормально. Пробую перенос в ту директорию, где мгновение назад был зависон - всё переносится

    Кто нибудь сталкивался с подобным?
    Заранее спасибо

Ответы