Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » вопрос для ГУРУ по работе в терминале

Ответить
Настройки темы
вопрос для ГУРУ по работе в терминале

Старожил


Сообщения: 392
Благодарности: 6

Профиль | Сайт | Отправить 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

 

Аватара для Angry Demon

Крылатый ужас


Moderator


Сообщения: 26377
Благодарности: 4434

Профиль | Отправить PM | Цитировать


babki
Я бы поставил монитор обращения к реестру и промониторил бы, куда лезет этот самый Controller.exe, что пишет в реестр. Исходя из этого, дал бы юзерам права на соответствующую ветку реестра. Кроме того, возможно, прога пишет что-то в свою папку в Program files, поэтому можно попробовать юзерам дать разрешения на запись туда.

-------
- Пал Андреич, Вы шпион?
- Видишь ли, Юра...


Здесь можно скачать драйверы

Сообщение оказалось полезным? Поблагодарите автора, нажав ссылку Полезное сообщение чуть ниже.


Отправлено: 16:53, 21-05-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 392
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
Я бы поставил монитор обращения к реестру и промониторил бы, куда лезет этот самый Controller.exe, что пишет в реестр.
вот я ее и промониторил и при каждом запуске она регистрируется в реестре и пишет вот это:
[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


Аватара для Angry Demon

Крылатый ужас


Moderator


Сообщения: 26377
Благодарности: 4434

Профиль | Отправить PM | Цитировать


babki
Т.е., юзеры запускают EXE-файл?

Цитата:
Может нужно запустить данную программу в качестве службы(программа представляет из себя файл controller.exe c аппаратной защитой ключом hasp-usb)- как это сделать?
Может. Нужно пробовать. Например, с помощью instsrv.exe и srvany.exe. Пример использования этих прог приведён тут. а что говорит саппорт программы?

-------
- Пал Андреич, Вы шпион?
- Видишь ли, Юра...


Здесь можно скачать драйверы

Сообщение оказалось полезным? Поблагодарите автора, нажав ссылку Полезное сообщение чуть ниже.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:09, 22-05-2007 | #4


Старожил


Сообщения: 392
Благодарности: 6

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
а что говорит саппорт программы?
в том то и дело что ничего вразумительного. типа программа будет работать у того пользователя , под которого она установлена (она в таком режиме и работает), а насчет терминалов - пишет типа мы не в курсе....

Цитата:
babki
Т.е., юзеры запускают EXE-файл?
юзеры в терминалах как раз не должны запускать этот файл. Они должны обращаться через технологию OLE к уже запущенному процессу controller.exe под пользователем Админисратора. Так как данная программа блокирует сом1 порт и второй экземпляр программы уже не будет в принципе работать... Дак вот при обращении ползователя из терминала через OLE объект к запущенному процессу от имени администратора, выдаются значения весов ,равные 0.

Отправлено: 12:09, 22-05-2007 | #5

Imv Imv вне форума

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Если решили проблему напишите , плиз, кам ?!!

Отправлено: 15:32, 02-12-2009 | #6



Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » вопрос для ГУРУ по работе в терминале

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход