ЗапуститьПриложение и КомандаСистемы
не работают на сервере и во внешнем соединении. Выход был найден в использовании COM интерфейса к WMI:WMI — это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows. WMI является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.Практически, данной технологией можно заменить вызовы Windows API. Приведу пример работы в 1С:
Команда = "notepad.exe"; //это просто пример
Locator = Новый COMОбъект("WbemScripting.SWbemLocator");
objWMIService = Locator.ConnectServer("."); //цепляемся к локальной системе
objStartup = objWMIService.Get("Win32_ProcessStartup");
objProcess = objWMIService.Get("Win32_Process");
intProcessID = 0;
intReturn = objProcess.Create(Команда, Null, Null, intProcessID);
If intReturn <> 0 Then
Сообщить("Ошибка выполнения: " + Команда); //если не клиент, том можно выводить сообщения в лог файл
EndIf;
Следует заметить, что есть подводные камни: данный код работает с привилегиями учетной записи от которой запущен сервер 1С (желательно не SYSTEM и подобные). В строке соединения
Locator.ConnectServer
можно указать удаленный хост, пользователя и пароль, однако по непонятной логике microsoft, передача пары логин/пароль не работает для локальной системы, только для удаленного хоста. Вызов Create
не ожидает завершения работы программы, поэтому если требуется ожидать окончание работы или вывод программы, нужно реализовать отдельные механизмы.Ссылки:
http://msdn.microsoft.com/en-us/library/aa384642%28VS.85%29.aspx
http://www.sysengineering.ru/Administration/AdministrationUsingWMI.aspx
Комментариев нет:
Отправить комментарий