Страницы

Поиск по вопросам

четверг, 8 ноября 2018 г.

Запуск *.exe, который находится на шаре

Сценарий:
Допустим, на некоторой шаре лежит какой-то *.exe файл.
Из своей программы я запускаю командную строку, где запускаю данный *.exe с передачей аргументов.
*.exe делает какую-то работу и закрывается и так N-раз.
Вопрос в том:
При каждом обращении к *.exe я его буду "скачивать" в ОЗУ по новой или ОС его закеширует?


Ответ

Любопытно, потестировал у себя в сети, вот что получил:
При обычном запуске *.exe из сетевой папки его кеширования не происходит Однако, если запущенная программа уже есть в памяти (висит как процесс) — файл не гоняется по сети при запуске второго экземпляра. Причём это работает, даже если запускать тот же файл, но с другими параметрами.
Как вывод — очевидный костыль: запустить одну копию программы, чтобы она висела в памяти, и последующие копии не гонялись по сети. При необходимости воспользоваться приостановкой процесса или даже запуском под отладчиком, если программа имеет тенденцию самостоятельно закрываться слишком быстро.
А теперь перейдём к нормальному решению. В Windows встроен механизм автономных файлов, позволяющий работать с сетевыми папками без доступа к сети (т.е. механизм кеширования). Настраиваться он может с обеих сторон.
1) Владелец сетевой папки может:
Разрешить кеширование (по умолчанию); Полностью запретить кеширование; Сделать его принудительным для всех открываемых сетевым пользователем файлов.
Настраивается это так: Компьютер → Управление → Общие папки → Общие ресурсы → Свойства → Настройка автономного режима
2) Со стороны пользователя можно:
В проводнике выбрать нужный файл и в контекстном меню поставить галочку на пункте «Всегда доступно автономно»
Централизованное управление всеми файлами, для которых настроен автономный доступ, есть в Панели Управления, в разделе Центр Синхронизации → Автономные файлы

Комментариев нет:

Отправить комментарий