Доброго времени суток всем.
Есть унф 1.6 под платформой 8.3.10.2580
При запуске системы срабатывает вот такой код
Сама функция описана следующим образом
Суть - вытащить mac-адрес машины, с которой запущена конфигурация.
Все прекрасно работало до того момента, пока не появился первый пользователь через веб-интерфейс. Функция уходит в исключение на строке
Соответственно, вопрос. Как на веб-клиенте получить mac-адрес машины?
Есть унф 1.6 под платформой 8.3.10.2580
При запуске системы срабатывает вот такой код
СетевыеПараметры = ПолучитьСетевыеПараметры(".");
Если ЗначениеЗаполнено(СетевыеПараметры.Mac) Тогда
Форма = ПолучитьФорму("ОбщаяФорма.ФормаЛогаМагазина", Новый Структура("ВидКоманды, АдресСтрока", 1, СетевыеПараметры.Mac));
КонецЕсли;
Сама функция описана следующим образом
Функция ПолучитьСетевыеПараметры(IP_Host) Экспорт
Попытка
Структура = Новый Структура("Host,Mac,User,IP");
ServicesSet = GetComObject("winmgmts:{impersonationLevel=impersonate}!\\" + СокрЛП(IP_Host) + "\root\cimv2");
// Host, UserName
Items = ServicesSet.ExecQuery("SEL ECT UserName,Name FR OM Win32_ComputerSystem");
Для каждого Item Из Items Цикл
Структура.Host = СокрЛП(Item["Name"]);
Структура.User = СокрЛП(Item["UserName"]);
Прервать;
КонецЦикла;
Если ПустаяСтрока(Структура.Host) Тогда
Возврат Неопределено;
КонецЕсли;
// MACAddress
Items = ServicesSet.ExecQuery("SEL ECT MACAddress FR OM Win32_NetworkAdapter WHERE NetConnectionStatus=2");
Для каждого Item Из Items Цикл
Если СокрЛП(Item["MACAddress"]) <> "" Тогда
Структура.Mac = СокрЛП(Item["MACAddress"]);
Прервать;
КонецЕсли;
КонецЦикла;
// IPAddress
Items = ServicesSet.ExecQuery("SELECT * FR OM Win32_NetworkAdapterConfiguration WH ERE MACAddress='" + Структура.Mac + "'");
Для Каждого objItem Из Items Цикл
Если ТипЗнч(objItem.IPAddress) = Тип("COMSafeArray") Тогда
Для Каждого Элем Из objItem.IPAddress Цикл
Структура.IP = Элем;
Прервать;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат Структура;
Исключение
Возврат Неопределено;
КонецПопытки;
КонецФункции
ПоказатьСуть - вытащить mac-адрес машины, с которой запущена конфигурация.
Все прекрасно работало до того момента, пока не появился первый пользователь через веб-интерфейс. Функция уходит в исключение на строке
ServicesSet = GetComObject("winmgmts:{impersonationLevel=impersonate}!\\" + СокрЛП(IP_Host) + "\root\cimv2");
Соответственно, вопрос. Как на веб-клиенте получить mac-адрес машины?
По теме из базы знаний
- Hot tray 1C - Быстрый старт v. 1.5 и версия .NET
- Как формируется GUID?
- Многофункциональная компонента для мобильной платформы: широковещательные сообщения (broadcasts), буфер обмена (clipboard), Bluetooth
- Создание высокодоступной фермы рабочих серверов OneScript в ОС Centos 7
- Рабочее место программиста на Linux. Серия лабораторных работ. Работа 1
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Добрый вечер
синтаксис WMI допускает слэши и в обратную сторону
попробуйте так:
GetComObject("winmgmts:{impersonationLevel=impersonate}!//" + СокрЛП(IP_Host) + "/root/cimv2");
Если непомогло то передайте явно имя машины
GetComObject("winmgmts:{impersonationLevel=impersonate}!//" + ИмяКомпьютера() + "/root/cimv2");
синтаксис WMI допускает слэши и в обратную сторону
попробуйте так:
GetComObject("winmgmts:{impersonationLevel=impersonate}!//" + СокрЛП(IP_Host) + "/root/cimv2");
Если непомогло то передайте явно имя машины
GetComObject("winmgmts:{impersonationLevel=impersonate}!//" + ИмяКомпьютера() + "/root/cimv2");
А как вот такое под linux реализовать?
А точнее - у меня есть код с COM объектов:
Хотелось бы его переложить на сервер под linux.
А точнее - у меня есть код с COM объектов:
WinMGMT = ПолучитьCOMОбъект("winmgmts:\\localhost\root\cimv2");
Win32_NetworkAdapterConfiguration = WinMGMT.ExecQuery("Sel ect IPAddress,MACAddress fr om Win32_NetworkAdapterConfiguration");
МассивМаков = новый Массив;
Для каждого NetworkAdapterConfiguration из Win32_NetworkAdapterConfiguration ЦИкл
Если ТипЗнч(NetworkAdapterConfiguration.IPAddress) = Тип("COMSafeArray") Тогда
Для каждого IPЭл из NetworkAdapterConfiguration.IPAddress ЦИкл
ВыбраныйMac = NetworkAdapterConfiguration.MACAddress;
Возврат ВыбраныйMac;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если ВыбраныйMac = Неопределено Тогда
Возврат NetworkAdapterConfiguration.MACAddress;
КонецЕсли;
ПоказатьХотелось бы его переложить на сервер под linux.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот