Есть ли рабочий пример в коде Clarion получения SID (GUID) и Login имени текущего локального и доменного пользователя Windows из приложения Clarion без прав администратора?

Модератор: Дед Пахом
Разграничение доступа и протокол: кто, когда и что делал и под каким логином был зарегистрирован пользователь работавший с приложением Clarion с SQL серверомkreator писал(а): 15 Декабрь 2018, 16:05Eсть функция getUserName. Без домена, кажется.С доменом надо разбираться отдельно. Могу посмотреть, что есть у нас. На память - из реестра вытаскивается. Но могу ошибаться. А зачем?
Код: Выделить всё
mOcx = Create(0, CREATE:ole)
mOcx{PROP:Create} = 'ADSystemInfo'
If mOcx{PROP:Object} Then
tcs = mOcx{'UserName'}
mOcx{PROP:Release} = 1
mOcx{PROP:deactivate} = 1
End
Destroy(mOcx)
if clip(tcs)<>''
objConnection = Create(0, CREATE:ole)
objConnection{PROP:Create} = 'ADODB.Connection'
If objConnection{PROP:Object} Then
objConnection{'Provider'} = 'ADsDSOObject'
objConnection{'Open'}
objRecordset = objConnection{'Execute("SELECT sAMAccountName, CN FROM ''LDAP://' & clip(tcs) &'''")'}
LOC:UserName=clip(objConnection{objRecordset &'.Fields.Item("sAMAccountName").Value'})
objConnection{PROP:Release} = 1
objConnection{PROP:deactivate} = 1
end
end
Destroy(objConnection)
Ну так запускай утилиту из клариона. Вывод перенаправь в файл и потом можно парсить его.Через системные утилиты есть такая возможность, а вот из кода Clarion пока не обнаружил
Код: Выделить всё
GLO:TempPath = GETTEMPPATH()
LOC:TempString = ''
GetRegSubKeys(REG_LOCAL_MACHINE , 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces' , LOC:RegSubKeysQueue)
loop i#=1 to records(LOC:RegSubKeysQueue)
get(LOC:RegSubKeysQueue , i#)
s" = GetReg(REG_LOCAL_MACHINE , 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' & clip(LOC:RegSubKeysQueue.LOC:RegSubKeyName), 'IPAddress')
if s"[1:7]<>'0.0.0.0'
LOC:TempString = clip(LOC:TempString) & ' ' & clip(s")
end
s" = GetReg(REG_LOCAL_MACHINE , 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' & clip(LOC:RegSubKeysQueue.LOC:RegSubKeyName), 'DhcpIPAddress')
if s"[1:7]<>'0.0.0.0'
LOC:TempString = clip(LOC:TempString) & ' ' & clip(s")
end
end
LOC:TempString = LOC:TempString[2:len(clip(LOC:TempString))]
GLO:IPAddresses = LOC:TempString
GLO:UserName = GetUserName()
GLO:ComputerName = GetReg(REG_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters' , 'NV Hostname')
GLO:Domain = GetReg(REG_LOCAL_MACHINE , 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters' , 'NV Domain')
Игорь, спасибо за отклик и предложение, но я сторонник по возможности, быть более независимым от сторонних утилитmorkovin писал(а): 16 Декабрь 2018, 5:17Ну так запускай утилиту из клариона. Вывод перенаправь в файл и потом можно парсить его.Через системные утилиты есть такая возможность, а вот из кода Clarion пока не обнаружил
https://docs.microsoft.com/en-us/sysint ... psloggedon
OddJob also provides the ability to pass data to a started process (via the Standard Input as well as on the command line), which allows command line applications to be run and data passed to them, as well as retrieving the result back from the process. This opens up a huge number of command line tools to your application, from simple command line clients, to command line server, compilers and even batch files.
Очевидно, что такую информацию надо получать через веб-интерфейс из любой точки мира. Кларион тут не подходит.кто, когда и что делал и под каким логином был зарегистрирован пользователь работавший с приложением Clarion с SQL сервером