Get Windows Local & Domain User SID and Login User Name
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Get Windows Local & Domain User SID and Login User Name
Привет всем!
Есть ли рабочий пример в коде Clarion получения SID (GUID) и Login имени текущего локального и доменного пользователя Windows из приложения Clarion без прав администратора?
Есть ли рабочий пример в коде Clarion получения SID (GUID) и Login имени текущего локального и доменного пользователя Windows из приложения Clarion без прав администратора?
С Уважением, Developer
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Get Windows Local & Domain User SID and Login User Name
Eсть функция getUserName. Без домена, кажется.С доменом надо разбираться отдельно. Могу посмотреть, что есть у нас. На память - из реестра вытаскивается. Но могу ошибаться. А зачем?
We are hard at work… for you.
Get Windows Local & Domain User SID and Login User Name
Разграничение доступа и протокол: кто, когда и что делал и под каким логином был зарегистрирован пользователь работавший с приложением Clarion с SQL сервером
Kreator, посмотри пожалуйста.
Через системные утилиты есть такая возможность, а вот из кода Clarion пока не обнаружил
С Уважением, Developer
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
Get Windows Local & Domain User SID and Login User Name
Если пользователь работает с SQL сервером, зачем это все делать в Кларионе? Это надо делать триггером на стороне сервера
Вот этот код используем для авторизации по текущему пользователю домена
Вероятно, другие item дадут другие параметры, поищи документацию
Вот этот код используем для авторизации по текущему пользователю домена
Код: Выделить всё
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)
Get Windows Local & Domain User SID and Login User Name
Rafael, спасибо за пример
Попробую.
Примеры для получения Windows SID Current User (Local / Domain) есть в основном на C++, C#, Delphi - на Clarion ничего не обнаружил
Попробую.
Примеры для получения Windows SID Current User (Local / Domain) есть в основном на C++, C#, Delphi - на Clarion ничего не обнаружил
С Уважением, Developer
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Get Windows Local & Domain User SID and Login User Name
Ну так запускай утилиту из клариона. Вывод перенаправь в файл и потом можно парсить его.Через системные утилиты есть такая возможность, а вот из кода Clarion пока не обнаружил
https://docs.microsoft.com/en-us/sysint ... psloggedon
WBR, morkovin
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Get Windows Local & Domain User SID and Login User Name
Вот здесь проверка на пользователя и домен - viewtopic.php?f=1&t=2148.
Есть у нас вот такое определение (сразу уж всё):
А вообще есть как-бы тонкость. Вот у нас в конторе несколько доменов. В реестре, похоже, храниться домен, где зарегистрирован данный комп. Но пользователь может быть из другого домена. Пример из верхней ссылки позволяет вытащить из AD полную инфу. Но тут как бы не проколоться, потому что (как у нас) есть домен-отец и домены-дети. Если не указать домен-отца, то сервис LDAP будет искать пользователя по всему миру. А где взять имя домен-отца? Скорее это должна быть глобальная настройка, задающаяся руками.
Есть ещё фигня, которую я пытался решить, но сразу не получилось, отложил. Пользователя уволили и его запись в AD отключена, может быть отключена по причине отпуска сотрудника (такое практикуется, сотруднику бывает запрещено работать в отпуске). И вот такой пользователь пришёл на работу, отключил комп от сети, и зашёл на этот под своей отключенной учёткой. Винда пропускает проверку на отключенность в этой ситуации. Потом пользователь включает в сеть и может делать что хочет. Нужна проверка на действующий пароль. Пример из верхней ссылки ответа на это не даёт.
И ещё. Если к SQL-серверу пользователь логинится через доменную учётку, может, действительно, логично воспользоваться SQL-сервером?
Есть у нас вот такое определение (сразу уж всё):
Код: Выделить всё
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')
Есть ещё фигня, которую я пытался решить, но сразу не получилось, отложил. Пользователя уволили и его запись в AD отключена, может быть отключена по причине отпуска сотрудника (такое практикуется, сотруднику бывает запрещено работать в отпуске). И вот такой пользователь пришёл на работу, отключил комп от сети, и зашёл на этот под своей отключенной учёткой. Винда пропускает проверку на отключенность в этой ситуации. Потом пользователь включает в сеть и может делать что хочет. Нужна проверка на действующий пароль. Пример из верхней ссылки ответа на это не даёт.
И ещё. Если к SQL-серверу пользователь логинится через доменную учётку, может, действительно, логично воспользоваться SQL-сервером?
We are hard at work… for you.
Get Windows Local & Domain User SID and Login User Name
Kreator, благодарю за пример и обозначенные возможные нюансы!
Как я понял, необходимо проверять на практике
Как я понял, необходимо проверять на практике
С Уважением, Developer
Get Windows Local & Domain User SID and Login User Name
Игорь, спасибо за отклик и предложение, но я сторонник по возможности, быть более независимым от сторонних утилитmorkovin писал(а): ↑16 Декабрь 2018, 5:17Ну так запускай утилиту из клариона. Вывод перенаправь в файл и потом можно парсить его.Через системные утилиты есть такая возможность, а вот из кода Clarion пока не обнаружил
https://docs.microsoft.com/en-us/sysint ... psloggedon
Но как вариант - предложенное тобой решение вполне реально - буду рассматривать и проверять все предложения
С Уважением, Developer
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Get Windows Local & Domain User SID and Login User Name
OddJob от CapeSoft:
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.
WBR, morkovin
- morkovin
- Ветеран
- Сообщения: 909
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Get Windows Local & Domain User SID and Login User Name
Очевидно, что такую информацию надо получать через веб-интерфейс из любой точки мира. Кларион тут не подходит.кто, когда и что делал и под каким логином был зарегистрирован пользователь работавший с приложением Clarion с SQL сервером
Решение
Node.js+WebSocket+SysUtilites
WBR, morkovin