Valnurat

Read of an AD attribute of Octet String syntax

17 posts in this topic

How do you read AD attribute: thumbnailPhoto and show the picture? It is a syntax of octet string.

I have no code for this.


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites



Maybe this and the following posts help:

 


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (2016-08-18 - Version 1.4.6.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2016-12-04 - Version 1.2.2.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

I read it and I could see some code to retrive data, but how do I show the picture?

 

#include <AD.au3>
#include <File.au3>

_AD_Open()
If @error Then Exit
$ThumbNailPhoto = _AD_GetObjectAttribute(@UserName, "thumbnailPhoto")
If @error Then $ThumbNailPhoto = ""
_AD_Close()

 


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites

No idea :(
But there are a lot of C# or PowerShell examples available on the web. Maybe one of them fits your needs.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (2016-08-18 - Version 1.4.6.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2016-12-04 - Version 1.2.2.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

From what I was reading, the file format is jpg, so I would think it would be possible to either write to a file and/or use GDI+ to display it...but I also don't have the know-how to create a script (to do the GDI+ part at least.)

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Probably not required but thought I'd share my solution.

#include <AD.au3>
Opt('ExpandVarStrings', 1)
_ADO_USERIMAGE()
Func _ADO_USERIMAGE()
    Local $oADO_USERIMAGE, $hOPN_THUMBNAIL
    Local $sPIC_USERIMAGE = '@AppDataDir@\Microsoft\Windows\AccountPictures\UserTile.jpg'
    _AD_Open()
        $oADO_USERIMAGE = _AD_GetObjectAttribute(@UserName, 'thumbnailPhoto')
            If @error Then Exit
        $hOPN_THUMBNAIL = FileOpen($sPIC_USERIMAGE, 26)
        FileWrite($hOPN_THUMBNAIL, $oADO_USERIMAGE)
        FileClose($hOPN_THUMBNAIL)
    _AD_Close()
EndFunc

 

Edited by Subz
Updated Code

Share this post


Link to post
Share on other sites

Great solution :)


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (2016-08-18 - Version 1.4.6.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2016-12-04 - Version 1.2.2.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Sorry for my very late reply, but how do I use that function?


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites

Subz's function grabs the thumbnailPhoto property and writes it to "@AppDataDir@\Microsoft\Windows\AccountPictures\UserTile.jpg".

No parameters needed. Just call the function.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (2016-08-18 - Version 1.4.6.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2016-12-04 - Version 1.2.2.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

No "usertitle.jpg" file is created in "@AppDataDir@\Microsoft\Windows\AccountPictures"

 

Is this correct:
"@AppDataDir@" ?


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites

aha.

 

Local $sPIC_USERIMAGE = @AppDataDir & '\Microsoft\Windows\AccountPictures\UserTile.jpg'


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites

Sorry forgot to put in 

Opt('ExpandVarStrings', 1) which allows you to use @AppDataDir in a string like "@AppDataDir@\Microsoft\Windows\AccountPictures\UserTile.jpg".

Share this post


Link to post
Share on other sites

Check.

It works now.

Is only possible to save this to a file? It can't be save in memory to show in GUICtrlCreatePic?

Thank you.


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites

You probably could using GDI+ but haven't tried myself, you can use GuiCtrlCreatePic("@AppDataDir@\Microsoft\Windows\AccountPictures\UserTile.jpg", ....)

Share this post


Link to post
Share on other sites

Yes, but I would like, if possible, to "save" the picture in the RAM and then use the RAM as the source.

Is that possible?


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites

Using the _GDIPlus_BitmapCreateFromMemory example works for me.

#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <AD.au3>

Example()

Func Example()
    _GDIPlus_Startup() ;initialize GDI+
    Local Const $iWidth = 300, $iHeight = 300, $iBgColor = 0xFFE8FF ;$iBgColor format RRGGBB

    Local $hGUI = GUICreate("GDI+ Example (" & @ScriptName & ")", $iWidth, $iHeight) ;create a test GUI
    GUISetBkColor($iBgColor, $hGUI) ;set GUI background color
    GUISetState(@SW_SHOW)

    Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;create a graphics object from a window handle
    Local $hBitmap = _GDIPlus_BitmapCreateFromMemory(_ADO_USERIMAGE()) ;load binary saved GIF image and convert it to GDI+ bitmap format
    Local $iW = _GDIPlus_ImageGetWidth($hBitmap), $iH = _GDIPlus_ImageGetHeight($hBitmap)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, ($iWidth - $iW) / 2, ($iHeight - $iH) / 2) ;display image in GUI

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    ;cleanup GDI+ resources
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    GUIDelete($hGUI)
EndFunc   ;==>Example

Func _ADO_USERIMAGE()
    _AD_Open()
        Local $oADO_USERIMAGE = _AD_GetObjectAttribute(@UserName, 'thumbnailPhoto')
            If @error Then Exit
    _AD_Close()
    Return $oADO_USERIMAGE
EndFunc

 

Share this post


Link to post
Share on other sites

Good lord.

 

Thank you.


Yours sincerely

Kenneth.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • akira2891
      By akira2891
      Hi,
      I was wondering is this all inputs can be done in 1 box with 3 fields and not to use another gui.
      And how can i validate data for example if i don't enter username he prompt me a message box all time until field is empty.
      I try like this but it give me a msgbox and continue on another field.
      $username = InputBox("Add new user", "Username", "", "", 200, 130, Default, Default, 0) if $username <> " " then msgbox(0, "", "Please enter username") endif $email = InputBox("Add new user", "Email", "", "", 200, 130, Default, Default, 0) $password = InputBox("Add new user", "Password", "", "*", 200, 130, Default, Default, 0)  
    • ExiLeD4EveR
      By ExiLeD4EveR
      Hello guys, i need help with something. Don't show me other similar threads pls i searched everything and nothing helped my situation. I just need when i press the checkbox in the password form to hide the text and show up as ** and when i press it again it should show letters instead of **.  Thanks in advance!
       
      #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <StaticConstants.au3> #include <IE.au3> #Region ### START Koda GUI section ### Form=c:\users\EXILED\desktop\coding\autoit\gui samples\simplegui.kxf $SimpleGUI = GUICreate("MultiProgram", 392, 122, -1, -1) GUISetIcon("C:\Users\EXILED\Desktop\Work\Smile\Icon Pack\EcranLcd.ico", -1) $Notepad = GUICtrlCreateButton("Notepad", 16, 24, 73, 25) GUICtrlSetCursor (-1, 0) $Calculator = GUICtrlCreateButton("Calculator", 112, 24, 73, 25) GUICtrlSetCursor (-1, 0) $ExitButoon = GUICtrlCreateButton("Exit", 160, 72, 73, 25) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") GUICtrlSetCursor (-1, 0) $Lol = GUICtrlCreateButton("Lol Login", 208, 24, 73, 25) GUICtrlSetCursor (-1, 0) $Facebook = GUICtrlCreateButton("Facebook ", 304, 24, 73, 25) GUICtrlSetCursor (-1, 0) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Calculator StartCalc() Case $Notepad StartNotepad() Case $Facebook ;= if Facebook is pressed it creates the email form $Face_Login = GUICreate("Facebook Login", 295, 88, -1, -1) GUISetIcon("C:\Users\EXILED\Downloads\Iconshock-Social-Media-Beakers-Facebook.ico", -1) $Label1 = GUICtrlCreateLabel("Email", 40, 24, 29, 17) $InputBox1 = GUICtrlCreateInput("", 72, 21, 148, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER)) $Email_button = GUICtrlCreateButton("Done", 96, 56, 97, 25) GUISetState(@SW_SHOW) ;Case $nMsg = $button ;$read = GUICtrlRead ($Password) ;GUICtrlDelete ($Password) ;If $shown Then ; $shown = False ; $Password = GUICtrlCreateInput($read, 20, 75, 160, 20, $ES_PASSWORD) ; GUICtrlSetData($button, "Show Password") ;Else ; $shown = True ; $Password = GUICtrlCreateInput($read, 20, 75, 160, 20, $GUI_SS_DEFAULT_INPUT) ; GUICtrlSetData($button, "Hide Password") ;EndIf While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Email_button ;= if Done from email form is pressed then delete the email form and open the password form $data1 = GUICtrlRead($InputBox1) GUIDelete($Face_Login) Sleep(200) $Face_Login2 = GUICreate("Facebook Login", 295, 120, -1, -1) GUISetIcon("C:\Users\ExILD\Downloads\Iconshock-Social-Media-Beakers-Facebook.ico", -1) $Label2 = GUICtrlCreateLabel("Password", 16, 24, 50, 17) $InputBox2 = GUICtrlCreateInput("", 72, 21, 148, 21, $ES_PASSWORD) $Pass_button = GUICtrlCreateButton("Done", 96, 88, 97, 25) $Checkbox1 = GUICtrlCreateCheckbox("Show Password", 16, 56, 105, 17, $BS_CENTER) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Checkbox1 $read = GUICtrlRead($InputBox2) GUICtrlDelete($InputBox2) If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then MsgBox(64, "Checked successfully!", "Your password is now visible", 10) Else MsgBox(64, "Unchecked successfully!", "Your password is now hidden",10) EndIf Case $Pass_button;= if Done from password form is pressed then it deletes the password form and , to add(open internet explorer on the facebook login page $data2 = GUICtrlRead($InputBox2) GUIDelete($Face_Login2) FB_SignIn() EndSwitch WEnd EndSwitch WEnd EndSwitch WEnd Func FB_SignIn() Global $oIE = _IECreate("https://www.facebook.com/") Local $username = _IEGetObjByName($oIE, "email") Local $password = _IEGetObjByName($oIE, "pass") Local $button = _IEGetObjById($oIE, "loginbutton") _IEFormElementSetValue($username, $data1) _IEFormElementSetValue($password, $data2) _IEAction($button, "click") EndFunc Func StartNotepad() Run("notepad.exe") EndFunc Func StartCalc() Run("calc.exe") EndFunc  
    • ExiLeD4EveR
      By ExiLeD4EveR
      'm trying to make an autologin script for facebook which prompts u to enter an email and a password and then opens the browser and logs you with the info u entered but im having a problem with the text entered in the input box. What i basically want it to do is take what's written on the inputbox and replace it on the email form in the facebook site and the password. Don't mind the other buttons in the gui , i just wanted to focus on the facebook button first. Any help will be appreciated
      #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> #include <StaticConstants.au3> #include <IE.au3> #Region ### START Koda GUI section ### Form=c:\users\ExiLeD\desktop\coding\autoit\gui samples\simplegui.kxf $SimpleGUI = GUICreate("MultiProgram", 392, 122, -1, -1) GUISetIcon("C:\Users\ExiLeD\Desktop\Work\Smile\Icon Pack\EcranLcd.ico", -1) $Notepad = GUICtrlCreateButton("Notepad", 16, 24, 73, 25) GUICtrlSetCursor (-1, 0) $Calculator = GUICtrlCreateButton("Calculator", 112, 24, 73, 25) GUICtrlSetCursor (-1, 0) $ExitButoon = GUICtrlCreateButton("Exit", 160, 72, 73, 25) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") GUICtrlSetCursor (-1, 0) $Lol = GUICtrlCreateButton("Lol Login", 208, 24, 73, 25) GUICtrlSetCursor (-1, 0) $Facebook = GUICtrlCreateButton("Facebook ", 304, 24, 73, 25) GUICtrlSetCursor (-1, 0) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Facebook ;= if Facebook is pressed it creates the email form $Face_Login = GUICreate("Facebook Login", 295, 88, -1, -1) GUISetIcon("C:\Users\ExiLeD\Downloads\Iconshock-Social-Media-Beakers-Facebook.ico", -1) $Label1 = GUICtrlCreateLabel("Email", 40, 24, 29, 17) $InputBox1 = GUICtrlCreateInput("", 72, 21, 148, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER)) $data1 = GUICtrlRead(-1) $Email_button = GUICtrlCreateButton("Done", 96, 56, 97, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Email_button ;= if Done from email form is pressed then delete the email form and open the password form GUIDelete($Face_Login) Sleep(200) $Face_Login2 = GUICreate("Facebook Login", 295, 88, -1, -1) GUISetIcon("C:\Users\ExiLeD\Downloads\Iconshock-Social-Media-Beakers-Facebook.ico", -1) $Label2 = GUICtrlCreateLabel("Password", 16, 24, 50, 17) $InputBox2 = GUICtrlCreateInput("", 72, 21, 148, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER)) $data2 = GUICtrlRead(-1) $Pass_button = GUICtrlCreateButton("Done", 96, 56, 97, 25) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Pass_button ;= if Done from password form is pressed then it deletes the password form and , to add(open internet explorer on the facebook login page GUIDelete($Face_Login2) FB_SignIn() EndSwitch WEnd EndSwitch WEnd EndSwitch WEnd Func FB_SignIn() Global $oIE = _IECreate("https://www.facebook.com/") Local $username = _IEGetObjByName($oIE, "email") Local $password = _IEGetObjByName($oIE, "pass") Local $button = _IEGetObjById($oIE, "loginbutton") _IEFormElementSetValue($username, $data1) _IEFormElementSetValue($password, $data2) _IEAction($button, "click") EndFunc  
    • messilm10
      By messilm10
      how do i get the crash report of any application and any running script?????
    • ronaldo97
      By ronaldo97
      Hello How can I make the GUI is compatible with all screen sizes ??  
      #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 623, 445, 192, 124, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZE)) GUISetBkColor(0x1E1E1E) $Label1 = GUICtrlCreateLabel("Welcome Back !!", 424, 64, 161, 29) GUICtrlSetFont(-1, 16, 400, 0, "Tahoma") GUICtrlSetColor(-1, 0x800000) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd How do I make Gui interface compatible with all screen sizes ?? 800*600
      1024*768
      1280*1024