Показать сообщение отдельно
Старый 20.11.2007, 17:51   #55  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от vallys Посмотреть сообщение
Кстати, будет ли выдано предупреждение пользователям, что АОС останавливается, если остановить сервис Axapta Object Manager?
Цитата:
Сообщение от vallys Посмотреть сообщение
Не будет. Вопрос открыт.
Ну так остановите их предварительно, в чем проблема? Останавливать-то AOS'ы с помощью выложенной здесь dll-ки можно. А получить их список можно из реестра, к примеру, через wmi - равно как и тормознуть сам сервис Axapta Object Manager
Код:
' константы, обозначающие ветки реестра
const HKCR	= &H80000000
const HKCU	= &H80000001
const HKLM	= &H80000002
const HKU	= &H80000003

const strAOSkey	= "system\currentcontrolset\services\axapta object server\applications"
const strAOSsvc	= "Axapta Object Server"
const strHost	= "."		' подставить нужное имя хоста; точка == localhost
set oWshShell	= CreateObject("WScript.Shell")
set oReg	= GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strHost & "\root\default:StdRegProv")
oReg.EnumKey HKLM, strAOSkey, colKeys
' тормозим все AOS'ы, о которых есть упоминания в реестре
for each objKey in colKeys
	WScript.Echo "Stopping AOS '" & objKey & "' at " & strHost
	oWshShell.Run "rundll32.exe AosMgr.dll,AosStop_RunDll " & strHost & " """ & objKey & """ 1", 7, True
next
' тормозим службу Axapta Object Manager
set oWMI	= GetObject("winmgmts:\\" & strHost & "\root\cimv2")
oWMI.ExecMethod("Win32_Service.Name='" & strAOSsvc & "'", "StopService")
set oReg	= nothing
set oWshShell	= nothing
set oWMI	= nothing
Здесть хоть WshShell.Run и вызывается синхронно (т.е. он вернет управление лишь после завершения запускаемого процесса), однако перед остановкой сервиса все равно лучше вставить какую-нить проверку или паузу. Но общая идея должна быть ясна.