Page 1 of 1

Получить имя компьютера из lua

Posted: Fri 28 Apr, 2017 18:15
by DeeZ
Не нашел (или плохо искал) как получить в срипте имя компьютера на котором выполняется срипт?
Скрипты синхронизирую между всеми компами, но нужно некоторые вещи делать по-разному.
Первое что приходит на ум - проверять существвоввание какого то файла. Но "разбрасывать" флаги не хочу.
Нужно как то определить где запускается скрипт. Пододйет не только имя компа. можно получать UID пользователя, под которым выполняется FAR.

Какой ID и как можно получитьв LUA?

Получить имя компьютера из lua

Posted: Fri 28 Apr, 2017 19:16
by Kerberos464
не силён в луа, но вроде можно делать так:
os.getenv("computername")

Получить имя компьютера из lua

Posted: Fri 28 Apr, 2017 19:50
by Shmuel
Kerberos464 wrote: не силён в луа
Не силён, а самое простое решение нашёл. :) Правда не знаю, будет ли это работать, если в имени есть юникод, например буквы из китайского и греческого.
Вот 2 "юникодных" решения:
(1) win.GetEnv("computername") и (2)

Code: Select all

local ffi=require'ffi'
ffi.cdef [[ BOOL GetComputerNameW(wchar_t* lpBuffer, DWORD* lpnSize); ]]
local wbuf = ffi.new("wchar_t[256]")
local size = ffi.new("DWORD[1]", 256)
local name =  ffi.C.GetComputerNameW(wbuf, size)~=0 and win.Utf16ToUtf8(ffi.string(wbuf, 2*size[0]))
far.Show(name)

Получить имя компьютера из lua

Posted: Sat 29 Apr, 2017 06:32
by DeeZ
Спасибо!