Active Directory - Users   zodpovězená otázka

VB.NET, Bezpečnost

Dobrý den.

Měl bych dotaz (spíš prosbu) o ukázku kódu jak z AD

1. vytáhnout všechny uživatele.

2. k danému uživatelskému jménu vrátit např středisko či PoBOX

3. zda je účet uzamčen.

Případně mi i pomůže odkaz někam, kde se této problematice věnují.

Sice jsem si vygooglil nějaké již hotové řešení, ale kódy jsou na mě tak složité, že sice tam něco dokážu předělat, ale jako celek jen bastlím na něčem čemu vůbec od začátku nerozumím.

Předem děkuji za rady a názory :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Myslím, že nenaleznete snažší řešení, než to co je například tady:

http://www.codeproject.com/KB/system/eve...

A nebo tady:

http://www.willasrari.com/blog/query-act...

A nebo tady:

http://www.nikhedonia.com/notebook/entry...

Obecně použijete objekt pro přístup do AD, který je v .NETu z pochopitelných důvodů velmi dobře zpracován a tím se dotážete na položku a jeji vlastnost. S trochou hledání nemůže být problém zadání zpracovat.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za radu.

Podařilo se mi částečně zprovoznit vyhledávaní.

Tady je ukázka z mého kódu a byl bych rád, když se vyjádříte k e správnosti kódu (zda ač funkční , není nesmyslně postaven)

I když je již toto téma uzavřené, prosím ještě o jednu radu.

Jak z hodnoty PwdLastSet dostat normální datum a čas. Vrací mi to asi 18ti místné číslo a nevím jak ho převést...

úkázka z kódu


   Private Sub Search2()
        Dim myDirectoryEntry As DirectoryEntry = New DirectoryEntry(String.Format("LDAP://" & DomainName))
        Dim mySearcher As DirectorySearcher = New DirectorySearcher(myDirectoryEntry)
        Dim mySort As SortOption = New SortOption("sn", SortDirection.Ascending)

        mySearcher.Filter = SearchText
        'MsgBox("")
        mySearcher.Sort = mySort
        For Each resEnt As SearchResult In mySearcher.FindAll()
            Try

                'Dim lenght As Integer = resEnt.Properties("DisplayName")(0).ToString().IndexOf(" ")
                Dim Name As String = resEnt.Properties("DisplayName")(0).ToString()
                Dim Username As String = resEnt.Properties("userPrincipalName")(0).ToString()
                Dim Stredisko As String = resEnt.Properties("PostOfficeBox")(0).ToString()
                Dim ID As String = resEnt.Properties("EmployeEid")(0).ToString()
                Dim WK As String = resEnt.Properties("Samaccountname")(0).ToString()
                Dim PassChanged As String = resEnt.Properties("PwdLastSet")(0)
                


                Label5.Text = WK
                Label6.Text = ID
                Label7.Text = Username
                Label8.Text = Stredisko
                Label9.Text = PassChanged
              
                'MsgBox(WK)

               
            Catch
                BadEntries = BadEntries + 1
                Application.DoEvents()
            End Try
            
        Next

Předem děkuji za radu, nebo připomínky...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Tak si i odpovím, ael přijde mi, že proti AD to hází cyhbu asi o 2 hodiny :(

      Dim PassChanged As Long = (resEnt.Properties("PwdLastSet")(0))

                Dim datelastset As Date = Date.FromFileTimeUtc(PassChanged)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Tak jsem si teď změnil heslo a potvrdilo se mi, že čas neodpovídá o 2 hodiny (pšesně píše o 2 dodiny méně) - nevíte prosím proč?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jaký formát času ti to vrací?např?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Po provedení předchozích operací mi to vrátínapř

"4.5.2009 5:04:05"

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Problém bude v časovém pásmu, metoda kterou používáte vrací UTC čas. Problém by mělo vyřešit použití:

Dim datelastset as DateTime = DateTime.FromFileTimeUtc(PassChanged).ToLocalTime()

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Myslel jsem si, že to bude v časovém, pásmu,a el nevěděl jsem jak to řešit. Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback