Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Как узнать учетные данные пользователя в домене (http://forum.oszone.net/showthread.php?t=283747)

Angel_19 17-06-2014 13:27 2365145

Как узнать учетные данные пользователя в домене
 
Доброго!

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

Creat0R 17-06-2014 14:12 2365172

Код:

$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 2365193

Скрипт все время выдает:
Код:

Not in domain
Хотя я в доменной учетке сейчас.
Пробовал при вызове функции явно указывать домен, результат тот же:
Код:

$sFullName = _GetUserName('mydomain')
, также пробовал:
Код:

$sFullName = _GetUserName('mydomain.local')

Creat0R 17-06-2014 15:05 2365197

Цитата:

Цитата Angel_19
Скрипт все время выдает »

А что если закомментировать условие:
Код:

If $objItem.Domain = $sDomain Then
?

Angel_19 17-06-2014 15:29 2365207

То же самое...

madmasles 17-06-2014 16:18 2365219

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 2365227

Помогло изменение:
Код:

$sFullName = $objItem.FullName
на
Код:

$sFullName = $objItem.Name

Iska 17-06-2014 16:54 2365237

Код:

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 2365273

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 2365287

madmasles, а AD у Вас развёрнута?

madmasles 17-06-2014 19:35 2365311

Цитата:

Цитата Iska
а AD у Вас развёрнута? »

Знать бы еще что это такое :)
Код:

$oADSystemInfo = ObjCreate("ADSystemInfo")
ConsoleWrite(IsObj($oADSystemInfo) & @LF)

Возвращает 1.

Iska 17-06-2014 22:42 2365422

Цитата:

Цитата madmasles
Знать бы еще что это такое »

Active Directory, службы каталога для доменной структуры.

Цитата:

Цитата madmasles
Возвращает 1. »

Сам объект доступен и без AD, поскольку реализуется библиотекой на локальной машине. Но ошибка у Вас наступает позже, нежели создание объекта, причём в совсем непонятном для меня месте. Что у Вас показывает:
Код:

AutoItSetOption("MustDeclareVars", 1)

Local $oADSystemInfo = ObjCreate("ADSystemInfo")

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

?

madmasles 17-06-2014 23:44 2365472

Цитата:

Цитата 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


Iska 18-06-2014 09:20 2365548

Цитата:

Цитата 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



madmasles 18-06-2014 12:07 2365619

Цитата:

Цитата Iska
Вот это-то и странно »

Забыл написать, что тестировал на AutoIt 3.3.8.1. :sorry:
3.3.10.2 или 3.3.12.0 дают такой же результат, как У Вас.

Iska 18-06-2014 12:18 2365623

madmasles, спасибо, ясно.


Время: 19:20.

Время: 19:20.
© OSzone.net 2001-