|  21.12.2011, 05:23 | #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. | 
|  | 
|  21.12.2011, 08:26 | #2 | 
| Участник | |
|  | |
| За это сообщение автора поблагодарили: Ivanhoe (1), mvsenin (1). | |
|  21.12.2011, 08:29 | #3 | 
| Участник | 
			
			Спасибо!
		 | 
|  | 
|  21.12.2011, 09:41 | #4 | 
| Участник | 
			
			просто хочу добавить, что по ссылка посты 5 летней давности и дрвенее, так что на современных версиях AX могут быть проблемы, например в случае использования EP или Ролевых центров - там логинится еще один пользователь с типом "Web user"
		 | 
|  | |
| За это сообщение автора поблагодарили: mvsenin (0). | |
|  21.12.2011, 09:53 | #5 | 
| Участник | 
			
			Да, это я уже заметил, но первый пример отсуда - Ограничение количества одновременных подключений под одним логином, вполне себе работает на AX 2009, она же 5.0. Спасибо всем! | 
|  | 
|  21.12.2011, 11:34 | #6 | 
| Участник | 
			
			А вот и засада - под Windows 7 код  X++: InfoLog.shutDown(true);Т.е., клиент запускается, вывдается алёрт, жмем ОК, окно клиента остается на экране, правда, без областей перехода, меню - просто серое окно с заголовком, причем, оно не закрывается даже по кресту... только через снятие процесса. Есть соображения? WinAPI? | 
|  | 
|  21.12.2011, 12:30 | #7 | 
| Участник | 
			
			позырьте по кросс-ссылкам, какой код исполняется по тайм-ауту (есть такой параметр в настройках пользователя)
		 | 
|  | 
|  22.12.2011, 02:02 | #8 | 
| Участник | Цитата:  не понимаю, о чем Вы. Я малость затупил - проблема под Windows Server 2003, но от этого пока не легче. Под Windows XP все ровненько (клиент, запускаемый вторым, правда, достаточно долго висит на экране после нажатия ОК в алерте перед закрытием, секунд 5-7) | 
|  | 
|  22.12.2011, 03:47 | #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. | 
|  | 
|  22.12.2011, 06:51 | #10 | 
| Участник | 
			
			Одна остающаяся засада - если при старте AX выведет какой-то свой диалог, например, информацию о несоответствии часовых поясов, то закроется этот самый диалог, а не весь клиент   , он (клиент) останется пустым-сереньким, незакрывающимся по кресту | 
|  | 
|  | 
| 
 |