|
Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » вопрос для ГУРУ по работе в терминале |
|
вопрос для ГУРУ по работе в терминале
|
Старожил Сообщения: 392 |
Профиль | Сайт | Отправить PM | Цитировать У нас есть сервер Виндовс2000сервер. К нему в терминальном режиме (citrix) подключаются клиенты и работают с программой 1С: бухгалтерия.
Есть программа, установленная на сервере под учетной записью администратора. Ее смысл – получения данных с весов (до 10 весов можно подключить одновременно, значение с одних весов должны сниматься для 1клиента, вторых весов – для 2 клиента и тд.) через адаптер подключенный к одному сом порту сервера. Она запускается на сервере и с помощью OLE-технологии может передавать данные в другие программы в частности с 1С бухгалтерию. Вот ее описание: "Controller.exe – программа связи с оборудованием. Описание программы. Программа Controller.exe создана для осуществления доступа к значению текущего веса снимаемого весовым терминалом с тензодатчиков, а так же для поддержки функционирования другого оборудования,например считывателя электронных карточек. Информация поступает в персональный компьютер по интерфейсам RS/232 или RS/485 согласно протоколу обмена. Controller.exe является полным сервером OLE автоматизации (full server OLE Automation), поэтому может использоваться и как самостоятельное приложение для индикации текущего веса на экране дисплея компьютера, и как компонента сложного многокомпонентного приложения, предоставляя свои методы внешним программам. В настоящее время большинство офисных и бухгалтерских систем поддерживают OLE-автоматизацию и имеют встроенный язык программирования на котором взаимодействие с внешними компонентами является простым и интуитивно понятным. Встроенный интерпретатор языка сам выполнит всю трудоемкую работу по взаимодействию приложения и внешних компонент, скрыв все детали от офисного программиста. Единственное требование – эти компоненты должны быть зарегистрированными в реестре Windows серверами OLE автоматизации. Этому требованию полностью удовлетворяет программа Controller.exe. Она поддерживает технологию OLE Automation и сама регистрируется в реестре при запуске в качестве обычного приложения Windows. Подчеркнем, т.к. это очень важно, что для использования программы совместно с другими приложениями, необходимо первый раз запустить ее самостоятельно для саморегистрации в реестре Windows. Это же необходимо делать всякий раз при изменении местоположения программы Controller.exe. Под запуском программы подразумевается старт и завершение работы приложения. Программа экспортирует 4 метода. Методы: GetStatus(AdrTerm,ChannelN) - получить текущий статус; GetWeight(AdrTerm,ChannelN) - получить значение веса; SetNull(AdrTerm,ChannelN) - обнулить показания (установка нуля). GetCount(AdrTerm,ChannelN,CountN) - получить показание счетчика. Все методы, за исключением GetCount, имеют по 2 входных параметра – адрес терминала,№ канала. Входные параметры представляют собой целые числа : AdrTerm от 0 до 255(0 для 232 интерфейса), ChannelN - 1 или 2. ChannelN никак не связан с № СОМ-порта, иными словами 1 канал не обязательно может быть на СОМ1. Метод GetCount помимо аналогичных первых двух параметров имеет дополнительный третий входной параметр – номер счетчика, представляющий собой целое число. В случае возникновения нестандартных ситуаций, методы могут возвращать следующие значения : -5000 и -5001 - «Терминал не обнаружен» и «С терминалом нет связи» соответственно. Справедливо для всех методов. -5002 - «Команда не поддерживается» для метода GetCount , «Команда выполнена» для метода SetNull, «Вес стабилен» для метода GetStatus. -5003 - «Выход за границы диапазона» для метода GetCount, «Вес не стабилен» для метода GetStatus. Пример работы с программой в “1С:Предприятие”. В “Глобальный модуль” поместить код создания объекта. Для этого в секции объявления глобальных переменных объявить соответствующую переменную. Перем ТВ003 Экспорт; А в процедуре ПриНачалеРаботыСистемы создать объект ТВ003 = СоздатьОбъект(“OSScales.ScAuto”); Создать новый документ или взять существующий, на форме разместить кнопку “Получить вес”, вызывать окно свойств для этой кнопки и на закладке “Дополнительно” в окне “Формула” указать функцию “Опрос()”, которая будет выполняться при нажатии кнопки. Осталось только щелкнув по закладке “Модуль” формы определить функцию Опрос (). Процедура Опрос() Var Res Res = ТВ003.GetStatus(1,1); Сообщить(“Текущий статус ”+Строка(Res)); Res = ТВ003.GetWeight(1,1); Сообщить(“Текущий вес ”+Строка(Res)); Res = ТВ003.GetCount(1,1,5); Сообщить(“Значение счетчика ”+Строка(Res)); Res = ТВ003.SetNull(1,1); Сообщить(“Состояние обнуления ”+Строка(Res)); КонецПроцедуры." На самом сервере, под учетной записью администратора значение веса корректно снимаются с любых весов как с помощью самой программы, так и с помощью вызываемых методов через 1С. См. пример выше. Проблема в том что клиенты (с правами пользователей), работающие в терминале не могут получить значение веса с нужных весов- выдается значение 0. В чем может быть проблема? Технология ОLE может корректно работать в терминальном режиме? Кто основательно знает эту технологию- расскажите в чем может быть загвоздка? Может ли теоретически клиент в терминале с правами пользователя работать с программой, запущенной другим пользователем – администратором на сервере через технологию OLE? Может нужно запустить данную программу в качестве службы(программа представляет из себя файл controller.exe c аппаратной защитой ключом hasp-usb)- как это сделать? И с какими правами лучше это сделать (NT Authority , system,администратор)? В реестре объект OLE программы зарегистрировался так с разрешениями для пользователей «только чтение» [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{249E3377-BEB3-4681-A746-D39EFDFF4E0F}] @="ScAuto Object" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{249E3377-BEB3-4681-A746-D39EFDFF4E0F}\LocalServer32] @="c:\\Controller\\Controller.exe" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{249E3377-BEB3-4681-A746-D39EFDFF4E0F}\ProgID] @="Controller.ScAuto" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{249E3377-BEB3-4681-A746-D39EFDFF4E0F}\TypeLib] @="{D6AEB295-05A2-4D41-A82F-21CB4BE5958F}" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{249E3377-BEB3-4681-A746-D39EFDFF4E0F}\Version] @="1.0" У кого какие есть мысли по этому поводу, выскажите их… |
|
Отправлено: 13:15, 21-05-2007 |
Крылатый ужас Сообщения: 26451
|
Профиль | Отправить PM | Цитировать babki
Я бы поставил монитор обращения к реестру и промониторил бы, куда лезет этот самый Controller.exe, что пишет в реестр. Исходя из этого, дал бы юзерам права на соответствующую ветку реестра. Кроме того, возможно, прога пишет что-то в свою папку в Program files, поэтому можно попробовать юзерам дать разрешения на запись туда. |
------- Отправлено: 16:53, 21-05-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 392
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{249E3377-BEB3-4681-A746-D39EFDFF4E0F}] @="ScAuto Object" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{249E3377-BEB3-4681-A746-D39EFDFF4E0F}\LocalServer32] @="c:\\Controller\\Controller.exe" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{249E3377-BEB3-4681-A746-D39EFDFF4E0F}\ProgID] @="Controller.ScAuto" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{249E3377-BEB3-4681-A746-D39EFDFF4E0F}\TypeLib] @="{D6AEB295-05A2-4D41-A82F-21CB4BE5958F}" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{249E3377-BEB3-4681-A746-D39EFDFF4E0F}\Version] @="1.0" но дело то в том что эта прога один раз должна запускаться на сервере (в виде некого сервера обработки запросов от пользователей), а к ней в процессе работы через OLE технологию подключаться клиенты, а они ничего в реестр уже писать не могут... аналогично и в папку Program files. Меня смущает что органиует OLE доступ файл с расширение .exe. У большинства OLE объектов он идет ввиде *.dll библиотек... |
|
Отправлено: 20:52, 21-05-2007 | #3 |
Крылатый ужас Сообщения: 26451
|
Профиль | Отправить PM | Цитировать babki
Т.е., юзеры запускают EXE-файл? Цитата:
|
|
------- Отправлено: 11:09, 22-05-2007 | #4 |
Старожил Сообщения: 392
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
Цитата:
|
|||
Отправлено: 12:09, 22-05-2007 | #5 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Если решили проблему напишите , плиз, кам ?!!
|
Отправлено: 15:32, 02-12-2009 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
DNS/DHCP - [решено] Вопрос к гуру по DNS | shav-75 | Сетевые технологии | 31 | 07-06-2009 12:37 | |
Прочее - Вопрос о работе программы ping | haker-kirik | Сетевые технологии | 5 | 08-05-2009 13:19 | |
[решено] Компьютер для дома за 8000-10000 руб на AMD ::: советы гуру ;-)) | webser | Выбор отдельных компонентов компьютера и конфигурации в целом | 11 | 18-07-2007 13:33 | |
Вопрос по работе JS и VBS скриптов | hasherfrog | Microsoft Windows Vista | 0 | 19-10-2006 12:39 | |
Вопрос для ГУРУ! | Guest | Microsoft Windows 2000/XP | 6 | 06-02-2003 23:48 |
|