Цитата
Как узнать MAC адрес компьютера, с которого заходил пользователь?
MAC-адрес можно узнать командой
getmac из командной строки Windows:
Так же не забывайте, что в системе могут быть установлены несколько сетевых карт и протоколов, а вызов свойств сетевой карты клиента надо делать локально, если подключаетесь к серверу удаленно.
|C:\Program Files\PostgreSQL\9.4.2-1.1C\bin>getmac
|
|Физический адрес Имя транспорта
|================= ==========================================================
|10-7B-44-16-C7-79 \Device\Tcpip_{4B9F7E56-610E-460F-90A7-AE2D91F2A575}
|00-FF-16-0D-B3-13 \Device\Tcpip_{160DB313-5615-466C-8497-D972C58FA97B}
|00-FF-32-A9-18-E2 \Device\Tcpip_{32A918E2-ECF9-4C8C-8DD8-417D7B1794B9}
|00-FF-86-45-FA-82 \Device\Tcpip_{8645FA82-14B3-412B-ACD9-60885857F52A}
|
|C:\Program Files\PostgreSQL\9.4.2-1.1C\bin>
Пишем запрос к объекту
Win32_NetworkAdapter:
Процедура ОпределитьMAC_адресНажатие(Элемент)
ServicesSet = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\" + ИмяКомпьютера() + "\root\cimv2");
Items = ServicesSet.ExecQuery("Select * From Win32_NetworkAdapter");
Для каждого Item Из Items Цикл
MACAddress = Item.MACAddress;
Если Не ЗначениеЗаполнено(MACAddress) Тогда // -- если убрать это условие, можно получить еще больше интересной информации
Продолжить;
КонецЕсли;
AdapterType = Item.AdapterType;
Caption = Item.Caption; //-- переименуйте эту переменную, потому как она меняет заголовок окна обработки, это английский синоним свойства Форма.Заголовок
Manufacturer = Item.Manufacturer;
Status = Item.Status;
Name = Item.Name;
PermanentAddress = Item.PermanentAddress;
Line = "AdapterType: " + AdapterType
+ символы.ПС + "Caption: " + Caption
+ символы.ПС + "Manufacturer: " + Manufacturer
+ символы.ПС + "MACAddress: " + MACAddress
+ символы.ПС + "Name: " + Name
+ символы.ПС + "Status: " + Status;
Сообщить(Line);
КонецЦикла;
КонецПроцедуры
И вот вывод моей процедурки на моем сервере:
Цитата
AdapterType: Ethernet 802.3
Caption: [00000009] Realtek PCIe GBE Family Controller
Manufacturer: Realtek
MACAddress: 10:7B:44:16:C7:79
Name: Realtek PCIe GBE Family Controller #2
Status:
AdapterType: Ethernet 802.3
Caption: [00000012] TAP-Win32 Adapter V9
Manufacturer: TAP-Win32 Provider V9
MACAddress: 00:FF:16:0D:B3:13
Name: TAP-Win32 Adapter V9 #3
Status:
AdapterType: Ethernet 802.3
Caption: [00000013] TAP-Win32 Adapter V9
Manufacturer: TAP-Win32 Provider V9
MACAddress: 00:FF:32:A9:18:E2
Name: TAP-Win32 Adapter V9
Status:
AdapterType: Ethernet 802.3
Caption: [00000015] TAP-Win32 Adapter V9
Manufacturer: TAP-Win32 Provider V9
MACAddress: 00:FF:86:45:FA:82
Name: TAP-Win32 Adapter V9 #2
Status:
Развивая тему, вытащил IP-адреса для каждой сетевухи:
Цитата
MAC адрес: 10:7B:44:16:C7:79
.IP адрес: 192.168.0.7
.IP адрес: fe80::c52f:4618:2c8b:851e
MAC адрес: 00:FF:16:0D:B3:13
.IP адрес: 10.12.12.1
MAC адрес: 00:FF:32:A9:18:E2
.IP адрес: 10.10.10.1
MAC адрес: 00:FF:86:45:FA:82
.IP адрес: 10.11.11.1
Процедура ОпределитьIPНажатие(Элемент)
// Определение MAC и IP адресов
MACAddress = "";
ServicesSet = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\" + ИмяКомпьютера() + "\root\cimv2");
Items = ServicesSet.ExecQuery("Select * From Win32_NetworkAdapter");
Для каждого Item Из Items Цикл
MACAddress = Item.MACAddress;
Если MACAddress <> Null Тогда
Сообщить("MAC адрес: " + MACAddress);
Items = ServicesSet.ExecQuery("Select * From Win32_NetworkAdapterConfiguration");
Для каждого Item Из Items Цикл
Если Item.MACAddress = MACAddress Тогда
Если Item.MACAddress <> Null Тогда
Для каждого IPAddress Из Item.IPAddress Цикл
Сообщить(".IP адрес: " + IPAddress);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры