Смекни!
smekni.com

Разработка проекта ИВС для управления файловыми ресурсами и ресурсами печати в сетях под управлением Win2000 (стр. 4 из 5)

Dim contName As String

Dim computer As IADsComputer

contName = computerdomain

Set cont = GetObject(“WinNT://” & contName)

cont.Filter = Array(“Computer”)

For Each computer In cont

cbo1.AddItem computer.Name

Next

Строки, начинающиеся с DIM, объявляют переменные IADsContainer - это тип интерфейса ADSI, именно переменная cont и будет объектом, используя свойства которого получаем возможность перечислить компьютеры (тип IADsComputrer) в домене с именем computerdomain. В теле цикла перечислим все компьютеры домена и внесём их имена в комбинированный список. Аналогично связываем и др. объекты, свойства которых могут и будут использованы для задач администрирования.

Можно перечислить все компьютеры, а затем использовать условие для определения необходимой очереди печати (выполняется на сервере печати) на основе ее точного имени, как это и реализовано в предоставленной программе.

Dim ComputerName As String

Dim ComputerDomain As String

Dim PrintQueueName As String

Dim PrintQueue As IADsPrintQueue

ComputerDomain = “Target_Computer_ Domain”

ComputerName = “Target_Сотриter_Name”

PrintQueueName =Target_Print_Queue”

Set PrintQueue = GetObject(“WinNT://” & ComputerDomain & “/” _

& ComputerName & “/” & PrintQueueName & “, printqueue”)

В данном примере очередь печати, обрабатываемая на компьютере с именем «Target_Сотриter_Name», находящемся в домене «Target_Computer_Domain»

и именуемая как «Target_Print_Queue» будет “связана” и обратиться к ней можно будет через объект PrintQueue. Допустим, необходимо приостановить процесс печати. Для этого можно, изменив в коде только тип переменной, отвечающей за имя объекта PrintQueue на IADsPrintQueueOperation и продолжая код применить строку : PrintQueue.Pause , аналогично можно возобновить печать и т.д.

На втором этапе- «Рабочем проектировании» осуществ­ляется техническая реализация выбранных наилучших вариантов и разрабатывается документация «Рабочий проект». Наиболее ответственной работой, выполняемой на этом этапе, яв­ляются «Кодирование и составление программной документации». Т.к. в данном случае кодирование представляет собой написание программного кода, фрагменты которого приведены выше, то налицо актуальность написания программной документации в виде инструкций для системного программиста и пользователя программы (администратора).

Общие требования. Для корректной работы программы управления файловыми ресурсами и ресурсами печати, как системному программисту, так и пользователю ПО потребуется набор прав администратора, т.е. полный доступ ко всем ресурсам.

Для системного программиста. Задачей системного программиста является подготовка ОС и рабочих программ для установки спроектированного комплекса. Как уже было оговорено выше, рабочей ОС выбрано семейство Windows 2000, инструкции по установке которой, можно найти в литературе, на сайте www.microsoft.com , а также на установочном диске. Обязательным требованием является стабильное межсетевое взаимодействие. Установка рабочих офисных программ так же документируется фирмой разработчиком. Остаётся сказать, что при использовании откомпилированной версии программы администрирования на компьютере необходимо инсталлировать необходимые динамические библиотеки, которые устанавливаются либо вместе с пакетом Visual Studio, либо программой установки рабочего проекта. При использовании исходной версии – код Visual Basic, необходимо подключать дополнительные компоненты языка, что требует определённых прав.

Для пользователя. Предполагается, что пользователем программы будет администратор сети, где комплекс ПО используется, т.е. все необходимые права у него есть. Основным требованием в работе программы будет предоставление всех необходимых данных и параметров рабочему механизму. Это означает, что недопустимы попытки обработки каких-либо ресурсов в случае потери даже одного из параметров (таких как Имя_домена, Имя_Рабочей_станции и др.), т.к. это может привести к сбоям, влияющим на корректную работу программы и сохранность раннее полученных результатов. Программа обеспечена справочным файлом, т.е. по нажатию F1 пользователь может получить необходимую подсказку.

Рассмотрим проект FIleUPR, созданный для управления файловыми ресурсами. Как видно из рисунка 2.1 в его состав входит четыре формы, одна из которых является стартовой (frmbase). Итак загружаем fileUPR.vbp и запускаем его, либо его откомпилированную версию fileUPR.exe – в этом случае он запускается сам. На рисунке 2.5 изображена основная рабочая форма проекта (frmbase). Для связывания с помощью GetObject свойств объектов с помощью которых будет осуществляться управление ресурсами и сессиями необходимо заполнить поля “имя домена” и “имя компьютера”, затем нажать кнопку “Готово”. Событие Click метода cmd_run реализует создание необходимых объектов и заполнение списка “Общие ресурсы” и “Пользовательские сессии”. После этого можно управлять ими используя набор кнопок, расположенных в соответствующих фрагментах (фреймах).

Пусть теперь необходимо создать общий сетевой ресурс. Для этого нажимаем кнопку “Создать” – в результате чего открывается форма “Создание общего ресурса”, где определяем свойства ресурса, заполняя соответствующие строки см. рис 2.6. Выполнив это действие нажимаем кнопку “Создать” этой же формы. В ответ получаем сообщение “Создан ресурс с заданными свойствами”. Возвратимся теперь к основной форме и нажмём кнопку “Обновить”, в событии Click которой внесена строка cmd_run.Click, то есть на самом деле срабатывает тело кнопки “Готово”. Таким образом, все общие ресурсы сетевой машины, имя которой выбрано в списке “Имя компьютера”, а также все подключения к ним снова перечисляются, что и реализует функцию обновления. Пролистав теперь список с именами ресурсов, заметим, что созданный на предыдущем шаге ресурс уже занесен в список.

Рис 2.5. Вид основной рабочей формы (frmbase) проекта fileUPR.

Рис 2.6. Окно запроса свойств для нового ресурса.

Рис 2.6. Создание нового общего ресурса и получение его в соответствующем списке основной рабочей формы путём нажатия кнопки “Обновить”.

Программа поддерживает и удаление ресурсов, а также и изменение их свойств, как заданных в предыдущем шаге – в момент создания, так и те которые я генерирую “по умолчанию”. Например, максимальное количество подключений при создании с помощью fileUPR автоматически устанавливается неограниченное, так как в большинстве случаев, в том числе и при использовании стандартных утилит Windows администраторы используют именно это значение. Аналогично управляем файловыми сессиями.

Значительная часть процесса разработки программного обеспечения приходится на его отладку и тестирование. Основная масса затруднений, с которыми пришлось столкнуться при написании кода, связана с использованием ссылок и компонентов, а также с ограниченность прав: не каждый пользователь домена может получить информацию об объектах Active Directory, а тем более менять свойства объектов и управлять ими. Определённая доля трудностей возникла на начальном этапе разработки при передаче данных между разными формами одного проекта. Готовое откомпилированное приложение получилось очень компактным (как в плане занимаемого пространства жесткого диска так и в интеграции функций и возможностей в пределах рабочих форм ).

Необходимо отметить, что программный проект лояльно относится к ресурсам аппаратуры, т.е. для устойчивой работы не требует больших вычислительных мощностей. Основные временные задержки возникают при перечислении большого количества элементов, например компьютеров домена или длинных очередей печати, однако даже они устойчиво обрабатываются процессорами с тактовой частотой порядка 400 МГц. В ходе написания программного кода было встречено несколько ошибок, исправить которые не удалось и для реализации необходимых действий пришлось использовать другие методы и пути. Например, внутри целочисленного цикла один и тот же ресурс запрашивается дважды, чем вызывает ошибку “Object required”, при этом если считываются ресурсы главного сервера (в моём случае \MASTER), то их имена перечисляются корректным образом. При использовании библиотеки ADSI часто возникают ошибки при связывании свойств объектов. Используется строгий синтаксис и правила корректного обращения с службам (Например LAN Manager). Такие ошибки приводят к нарушению автоматизации использования свойств объектов “Automation Error”. И третья, наиболее частая ошибка – “Ошибка доступа” связана как раз с нехваткой прав для совершения определённых операций (Например, создание общего ресурса или просмотр пользовательских сессий). Ну и ошибки преобразования и переполнения типов “Type mismatch”, а также “Variable not default” были обработаны по мере приближения к завершению разработки. Потенциальной проблемой, в ходе разработки стало завершение работы приложения Visual Basic при отсутствии прав администратора в момент использования элементов управления ActiveX. Выходом из сложившейся ситуации стало использование прав администратора на локальной машине – в итоге ошибка, определённая выше как третья сохраняется, но Visual Basic работает корректно.

Кроме ошибок, возникших при выполнении проекта пришлось столкнуться с некоторыми неудобными моментами, например при работе с объектом ListView – комбинированный табличный список выбрать маркером (.Selected) можно только нулевое “подполе” (SubItem), т.о. все последующие операции со строкой списка выполняются опираясь на значение SubItem(0), в том числе и при удалении строки из списка (приходится применять циклы). Затруднения, возникающие при передаче значений между формами проекта, также были разрешены, причем решений может быть несколько: