-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Как узнать учетные данные пользователя в домене
Доброго!
Подскажите как узнать учетные данные пользователя вошедшего в систему если используется домен?
Т.е. нужен логин, и его ФИО.
|
Код:
$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
|
Скрипт все время выдает:
Хотя я в доменной учетке сейчас.
Пробовал при вызове функции явно указывать домен, результат тот же:
Код:
$sFullName = _GetUserName('mydomain')
, также пробовал:
Код:
$sFullName = _GetUserName('mydomain.local')
|
Цитата:
Цитата Angel_19
Скрипт все время выдает »
|
А что если закомментировать условие:
Код:
If $objItem.Domain = $sDomain Then
?
|
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
;...
|
Помогло изменение:
Код:
$sFullName = $objItem.FullName
на
Код:
$sFullName = $objItem.Name
|
Код:
AutoItSetOption("MustDeclareVars", 1)
Local $oADSystemInfo = ObjCreate("ADSystemInfo")
Local $oIADsUser = ObjGet("LDAP://" & $oADSystemInfo.UserName)
ConsoleWrite($oIADsUser.sAMAccountName & @CRLF)
ConsoleWrite($oIADsUser.FullName & @CRLF)
|
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
|
madmasles, а AD у Вас развёрнута?
|
Знать бы еще что это такое :)
Код:
$oADSystemInfo = ObjCreate("ADSystemInfo")
ConsoleWrite(IsObj($oADSystemInfo) & @LF)
Возвращает 1.
|
Цитата:
Цитата madmasles
Знать бы еще что это такое »
|
Active Directory, службы каталога для доменной структуры.
Сам объект доступен и без AD, поскольку реализуется библиотекой на локальной машине. Но ошибка у Вас наступает позже, нежели создание объекта, причём в совсем непонятном для меня месте. Что у Вас показывает:
Код:
AutoItSetOption("MustDeclareVars", 1)
Local $oADSystemInfo = ObjCreate("ADSystemInfo")
ConsoleWrite("Error:" & @error & @CRLF)
ConsoleWrite("[" & $oADSystemInfo.UserName & "]" & @CRLF)
?
|
Цитата:
Цитата Iska
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
|
Цитата:
Цитата madmasles
Ваш код пишет в консоли (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
|
|
Забыл написать, что тестировал на AutoIt 3.3.8.1. :sorry:
3.3.10.2 или 3.3.12.0 дают такой же результат, как У Вас.
|
madmasles, спасибо, ясно.
|
Время: 19:20.
© OSzone.net 2001-