![]() |
#1 |
Участник
|
Один экземпляр клиента AX на одного пользователя
Привет формучанам, есть вопрос, не раскрывшийся после сёрчинга по докам и Гуглю...
Можно ли как-то просто ограничить кол-во запускаемых клиентов AX на общедоступном компьютере с Windows Server 2003 - один юзер или хотя бы одна сессия=один запущенный клиент? Используется AX 2009, один AOS, удаленный пользователи работают через терминальный доступ к одному компьютеру с Windows Server 2003 - именно на этом компьютере и хотелось бы сделать так, чтобы один юзер не мог запустит больше одного экземпляра клиента AX. P.S. Citrix не подходит. Может вопрос не к AX напрямую и что-то можно решить средствами администрирования Windows Servers 2003... Последний раз редактировалось mvsenin; 21.12.2011 в 05:27. |
|
![]() |
#2 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Ivanhoe (1), mvsenin (1). |
![]() |
#3 |
Участник
|
Спасибо!
|
|
![]() |
#4 |
Участник
|
просто хочу добавить, что по ссылка посты 5 летней давности и дрвенее, так что на современных версиях AX могут быть проблемы, например в случае использования EP или Ролевых центров - там логинится еще один пользователь с типом "Web user"
|
|
|
За это сообщение автора поблагодарили: mvsenin (0). |
![]() |
#5 |
Участник
|
Да, это я уже заметил, но первый пример отсуда - Ограничение количества одновременных подключений под одним логином, вполне себе работает на AX 2009, она же 5.0.
Спасибо всем! |
|
![]() |
#6 |
Участник
|
А вот и засада - под Windows 7 код
X++: InfoLog.shutDown(true); Т.е., клиент запускается, вывдается алёрт, жмем ОК, окно клиента остается на экране, правда, без областей перехода, меню - просто серое окно с заголовком, причем, оно не закрывается даже по кресту... только через снятие процесса. Есть соображения? WinAPI? |
|
![]() |
#7 |
Участник
|
позырьте по кросс-ссылкам, какой код исполняется по тайм-ауту (есть такой параметр в настройках пользователя)
|
|
![]() |
#8 |
Участник
|
Цитата:
![]() |
|
![]() |
#9 |
Участник
|
Вот он, всеработающий код, для закрытия повторно запускаемого клиента AX при запуске (условие может каждый выбрать себе сам, в данном примере ограничение сделано для запуска второго экземпляра клиента на компьютере с одним и тем же именем один и тем же пользователем):
X++: void startupPost() { xSession session; Session curSession; int counter; str warning; HWND AxClient; ; //--- CRM start if (!appl.isConfigMode()) { //--- Prevent call to smmInit during installation of Axapta //--- If not, code in the method below is run that uses a table that has not yet been created for (counter = 1; counter <= xSession::maxSessionId(); counter++) { session = new xSession(counter, true); if (session) { if (session.sessionId() != sessionid()) { if ((curuserid() == session.userId()) && (winapi::getComputerName() == session.clientComputerName())) { warning = strfmt("Под пользователем %1 АХ уже запущена на компьютере %2!", session.userId(), session.clientComputerName()); Box::warning(warning, "Доступ ограничен"); AxClient = winapi::getActiveWindow(); winapi::sendMessage(AxClient,274,61536,''); // = SendMessage(WHND, WM_SYSCOMMAND, SC_CLOSE, 0); } } } } SmmInit::construct(); } //--- CRM end } Последний раз редактировалось mvsenin; 22.12.2011 в 05:35. |
|
![]() |
#10 |
Участник
|
Одна остающаяся засада - если при старте AX выведет какой-то свой диалог, например, информацию о несоответствии часовых поясов, то закроется этот самый диалог, а не весь клиент
![]() |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|