Диалоговые окна и команды
Здесь:
http://akostina76.ucoz.ru/blog/2017-11-20-4593
… показано как Access управляет AutoCAD-ом запуская его внутренние команды. Обычно те же внутренние команды запускаются при нажатии каких-то кнопок в программах. В AutoCAD-е есть кнопка «Линия» которая запускает программу рисования линии, и т.д.
Многие программы и наверное все программы именуемые серверами имеют так называемые консоли – оснастки, т.е служебные программы позволяющие выполнять написанные с клавиатуры команды, на которые сервера как-то реагируют.
Есть в них обычно и своеобразная «механизация труда». Не обязательно писать команду вручную. Можно вызвать некое диалоговое окно, вписать в соответствующие экранные поля параметры и нажать кнопку «Выполнить» (или любой её аналог). По этой кнопке будет сгенерирован текст конкретной команды, и эта команда будет запущена на исполнение.
Случилось нечто довольно загадочное. Команда отрабатывала если ей ввести вручную а при попытке выполнить её же из диалогового окна возникали разнообразные ошибки (и подключение не происходило).
Выяснилось это случайно. Домашняя машина нашла сеть, но не смогла подключиться по имени машины, только по её адресу. Чем возиться с сетевыми настройками, в которых я мало чего понимаю, а решила подключить её по адресу. Экспериментировала дома. При подключении у меня уже в домашней сети возникла та же проблема. Под рукой была команда, которая должна была запуститься из диалогового окна. Я её запустила из консоли и всё заработало.
Обычно такое хочется сделать, отбросить и забыть, но попытаюсь описать/предположить что это было.
У машины в сети есть её личный номер (адрес) и название. Пусть есть почтальон который должен доставить куда-то информацию. Номер комнаты, куда он должен пойти, он всегда знает и легко найдёт эту комнату. А вот если ему сказать «Бухгалтерия» или какое-то другое название отдела он найдёт комнату только если знает какой отдел в какой комнате сидит. «Номер комнаты» \это IP адрес машины. А «название отдела» это сетевое имя машины.
Теоретически «почтальону» можно сообщать и адрес и название. Сообщать адрес не очень хорошо потому что они иногда меняются. Не изучала этот вопрос. Такое ощущение что машина пытается получить тот адрес, который у неё был прошлый раз и если это удаётся (т.е адрес – «комната» ещё никем не занят) то адрес будет один и тот же. Но в сети могут произойти изменения, адрес (если не задано жестко что этот «отдел» работает только в этой «комнате») может поменяться и тогда настройки перестанут работать. В данном же случае мне надо обращаться к тому самому жёстко прописанному адресу потому и была возможность так сделать.
Обращение по имени машины рекомендуется потому что позволят снять проблему динамических (периодически меняющихся) адресов. Только вот список соответствий (имен и адресов) в «почтальона» должен быть полным и правильным. Как обновляется этот список и где его можно посмотреть я не знаю. Это знают системные администраторы. Именно с этим списком я меня возникли проблема, которую я решила обойти другим способом.
Такой метод позволяется. Подключение выполняет та же команда. Только в неё надо написать немного другие параметры. И тут надо сказать, что из диалогового окна такую команду запустить нельзя. Диалоговые окна придуманы не для всех а только для наиболее частых действий. Перекашивало его, правда, на второй команде…
Вообще-то можно вывести список того, что он выполняет по нажатии кнопок, но это немного факультативная информация. Не факт что он делает именно это. Не похоже, например, что он удаляет и создаёт соединение (а пишет именно это). С другой стороны поворачивать на разнее варианты (в зависимости от ситуации) могут и команды уровнем ниже. Т.е я пишу «Выполнить» а ниже уже по обстановке могут выбирать как это лучше выполнять.
Я допускаю, что происходило следующее. Сервер видит имя машины, к которой он должен подключиться. А ещё он видит что адрес у неё не из местной локальной сети а какой-то внешний. Т.е явно не внутренний «номер комнаты» а полный адрес с улицей и домом. Возможно из-за этого на каком-то уровне выбирался другой вариант подключения (не по имени, как обычно, а по адресу). Это как-то молча именно так подключалось но диалоговое окно с этим подключением уже не могло работать. Возможно ещё на решение подключаться по адресу (а не имени) влияло то, что было обнаружение что как-то это соответствие нестабильно работает.
Не знаю я почему так происходит. Это тема меня несколько утомила и прямо сейчас это исследовать я не хочу.
Теперь про то почему это работало на старой машине. Не знаю, если коротко ))). Первый вариант это то что там это соответствие имен и адресов надёжнее работает. Т.е либо так считают, либо везде где смотрели (если списки соответствий хранятся в нескольких местах) нашли нужную информацию и посчитали, что можно использовать и имя машины.
Корректность этих внутренних списков может объясняться и тем, что машина долго работала в сети и за эту долгую работу всё нужное везде вписалось.
Просто для иллюстрации пример с подключение Excel-евской таблицы. Чтобы заработало надо, кроме всего прочего, войти в некую внутреннюю папку. У учетной записи (пользователя машины) административные права, т.е этот пользователь вообще-то может делать всё. Но при попытке войти в эту папку выдаётся сообщение «У Вас нет доступа к этой папке». После чего по кнопке «Ок» он туда спокойно впускает и больше таких сообщений не выводит. Это потому что он не только пропустил но особо записал в свой «журнал» что этот пользователь может смотреть файлы этой папки. Если нет такой записи (командой ей тоже вроде можно сделать) , то программы (включая сервера) работающие от имени этого пользователя (например, им запущенные) не будут иметь доступа к папке. Что, в какой момент, при каких обстоятельствах и в какой внутренний «журнал» записалось на старой машине я не знаю. Но могло что-то записаться благодаря чему та машина сразу подключилась.
|