# Active Directory och VBA
Author: johan

**Active Directory** (AD) kan också användas för att kontrollera rättigheter, t ex att man är med i en viss säkerhetsgrupp. Du kan då visa olika data för olika användare och vara säker på att rätt person ser rätt sak.

Observera att du måste vara ansluten till en domän för att nedanstående kod ska fungera.

Hämta uppgift ur Active Directory
---------------------------------

För att hämta ut uppgifter ur Active Directory om den inloggade användaren behöver vi först skapa ett objekt med koppling till AD. Denna kod gör detta:

**Set oAdSys = CreateObject("ADSystemInfo")**

**Set oUser = GetObject("LDAP://" & oAdSys.UserName)**

Objektet oUser har nu egenskaper för olika uppgifter. Nedan ser du en tabell med uppgifter och vad de hämtar:

**Namn**

**Hämtar**

SAMAccountName

Inloggningsnamnet (utan domän)

DisplayName

Visningsnamnet i AD, oftast Förnamn Efternamn

GivenName

Förnamn

SN

Efternamn

CN

Common Name, visar namnet på användaren, gruppen eller datorn

Company

Företagsnamn

L

Stad (egentligen Location, men oftast användas detta för stad)

Department

Avdelning

Mail

E-postadress

facsimileTelephoneNumber

Faxnummer

Initials

Initialer

Mobile

Mobiltelefonnummer

StreetAddress

Gatuadress

TelephoneNumber

Telefonnummer

PostalCode

Postnummer

Det finns även fler egenskaper, men jag har här valt att endast ta upp de vanligaste.

För att hämta ut en uppgift ur AD använder du denna kod:

**oUser.<egenskap>**

T ex:

**MsgBox oUser.DisplayName**

Du kan också hämta ut uppgifter med metoden Get(egenskapsnamn), t ex:

**MsgBox oUser.Get("PostalCode")**

Kontrollera gruppmedlemskap
---------------------------

Du kan enkelt kontrollera om den inloggade användaren är medlem i en viss säkerhetsgrupp. Detta är mycket användbart om du vill visa olika data eller göra olika funktioner tillgängliga beroende på vem som är inloggad.

Egenskaper **memberOf** ger en samling med alla grupper som den inloggade användaren är medlem i. Nedanstående funktion kontrollera om användaren är medlem i en viss grupp:

Public Function IsMember(ByVal strGroup) As Boolean

    Dim strCurrent As Variant

    Dim oGroup As Object

    Dim oAdSys As Object

    Dim oUser As Object

    Set oAdSys = CreateObject("ADSystemInfo")

    Set oUser = GetObject("LDAP://" & oAdSys.UserName)

    For Each strCurrent In oUser.memberOf

        Set oGroup = GetObject("LDAP://" & strCurrent)

        If UCase(oGroup.CN) = UCase(strGroup) Then

            IsMember = True

            Exit Function

        End If

    Next

    IsMember = False

End Function

Av: johan
---------

*   [Personlig sida](javascript:void%20top.ShowProfile('johan'))
*   [Kontakta](javascript:void%20top.ShowProfile('johan',%20'Contact.aspx'))

Datum för publicering
---------------------

*   2006-04-18

_Behöver du hjälp med [utbildning](http://www.spider.se/Spider/schema.aspx "http://www.spider.se/Spider/schema.aspx") eller [mall-utveckling](http://www.spider.se/Spider/mallarvba.aspx "http://www.spider.se/Spider/mallarvba.aspx")? Jag hjälper gärna till via min arbets-givare [Spider](http://www.spider.se/ "http://www.spider.se/")._
