Войти

Показать полную графическую версию : Как узнать учетные данные пользователя в домене


Angel_19
17-06-2014, 13:27
Доброго!

Подскажите как узнать учетные данные пользователя вошедшего в систему если используется домен?
Т.е. нужен логин, и его ФИО.

Creat0R
17-06-2014, 14:12
$sFullName = _GetUserName()

If @error Then
ConsoleWrite('Not in domain' & @LF)
Else
ConsoleWrite($sFullName & @LF)
EndIf

Func _GetUserName($sDomain = @ComputerName, $sUserName = @UserName)
Local $objWMIService = ObjGet('winmgmts:\\' & @ComputerName & '\root\CIMV2')
Local $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_UserAccount WHERE Name = "' & $sUserName & '"', 'WQL', 0x10 + 0x20)

If IsObj($colItems) Then
For $objItem In $colItems
If $objItem.Domain = $sDomain Then
$sFullName = $objItem.FullName

If $sFullName <> '' Then
Return $sFullName & ' (' & $sUserName & ')'
EndIf
EndIf
Next
EndIf

Return SetError(1, 0, $sUserName)
EndFunc

Angel_19
17-06-2014, 14:46
Скрипт все время выдает:
Not in domain

Хотя я в доменной учетке сейчас.
Пробовал при вызове функции явно указывать домен, результат тот же:
$sFullName = _GetUserName('mydomain') , также пробовал:
$sFullName = _GetUserName('mydomain.local')

Creat0R
17-06-2014, 15:05
Скрипт все время выдает »
А что если закомментировать условие:
If $objItem.Domain = $sDomain Then
?

Angel_19
17-06-2014, 15:29
То же самое...

madmasles
17-06-2014, 16:18
Angel_19,
У меня не возвращается $objItem.FullName ни для кого.
У меня только так работает:;...
If $objItem.Domain = $sDomain Then
Local $sRet = $objItem.FullName
If $sRet Then Return $sRet
$sRet = $objItem.Caption
If $sRet Then Return $sRet
EndIf
;...

Angel_19
17-06-2014, 16:32
Помогло изменение:
$sFullName = $objItem.FullName
на
$sFullName = $objItem.Name

Iska
17-06-2014, 16:54
AutoItSetOption("MustDeclareVars", 1)

Local $oADSystemInfo = ObjCreate("ADSystemInfo")
Local $oIADsUser = ObjGet("LDAP://" & $oADSystemInfo.UserName)

ConsoleWrite($oIADsUser.sAMAccountName & @CRLF)
ConsoleWrite($oIADsUser.FullName & @CRLF)

madmasles
17-06-2014, 18:33
Iska,
У меня Ваш код с такой ошибкой вылетает:... .au3 (15) : ==> The requested action with this object has failed.:
Local $oIADsUser = ObjGet("LDAP://" & $oADSystemInfo.UserName)
Local $oIADsUser = ObjGet("LDAP://" & $oADSystemInfo.UserName^ ERROR
->18:31:03 AutoIt3.exe ended.rc:1

Iska
17-06-2014, 18:59
madmasles, а AD у Вас развёрнута?

madmasles
17-06-2014, 19:35
а AD у Вас развёрнута? »Знать бы еще что это такое :)
$oADSystemInfo = ObjCreate("ADSystemInfo")
ConsoleWrite(IsObj($oADSystemInfo) & @LF)Возвращает 1.

Iska
17-06-2014, 22:42
Знать бы еще что это такое »
Active Directory, службы каталога для доменной структуры.

Возвращает 1. »
Сам объект доступен и без AD, поскольку реализуется библиотекой на локальной машине. Но ошибка у Вас наступает позже, нежели создание объекта, причём в совсем непонятном для меня месте. Что у Вас показывает:
AutoItSetOption("MustDeclareVars", 1)

Local $oADSystemInfo = ObjCreate("ADSystemInfo")

ConsoleWrite("Error:" & @error & @CRLF)
ConsoleWrite("[" & $oADSystemInfo.UserName & "]" & @CRLF)

?

madmasles
17-06-2014, 23:44
Active Directory, службы каталога для доменной структуры. »Уже нашел в google, почитал и понял, что оно мне дома не нужно. :)
Ваш код пишет в консоли (Win7x32 и WinXPx32):Error:0
C:\Users\... .au3 (80) : ==> The requested action with this object has failed.:
ConsoleWrite("[" & $oADSystemInfo.UserName & "]" & @CRLF)
ConsoleWrite("[" & $oADSystemInfo.UserName ^ ERROR

Iska
18-06-2014, 09:20
Ваш код пишет в консоли (Win7x32 и WinXPx32): »
Вот это-то и странно ;):
+>09:18:50 AU3Check ended.rc:0
>Running:(3.3.10.2):C:\Program Files\AutoIt3\autoit3.exe "E:\Песочница\0377\0001.au3"
Error:0
[]
+>09:18:50 AutoIT3.exe ended.rc:0
>Exit code: 0 Time: 1.908

madmasles
18-06-2014, 12:07
Вот это-то и странно »Забыл написать, что тестировал на AutoIt 3.3.8.1. :sorry:
3.3.10.2 или 3.3.12.0 дают такой же результат, как У Вас.

Iska
18-06-2014, 12:18
madmasles, спасибо, ясно.




© OSzone.net 2001-2012