Определение mac-адреса

1. Vladimir85 18.12.17 16:07 Сейчас в теме
Доброго времени суток всем.
Есть унф 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-адрес машины?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. minimajack 80 19.12.17 16:58 Сейчас в теме
(1)

Соответственно, вопрос. Как на веб-клиенте получить mac-а


писать расширение для вэбклиента....и то врятли взлетит
2. remix950 9 19.12.17 16:57 Сейчас в теме
Добрый вечер
синтаксис WMI допускает слэши и в обратную сторону

попробуйте так:
GetComObject("winmgmts:{impersonationLevel=impersonate}!//" + СокрЛП(IP_Host) + "/root/cimv2");

Если непомогло то передайте явно имя машины
GetComObject("winmgmts:{impersonationLevel=impersonate}!//" + ИмяКомпьютера() + "/root/cimv2");
4. michaelbag 28.02.20 16:01 Сейчас в теме
А как вот такое под 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.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот