Want to get creator, lastmodifier, and other security info for an item in an event sink?

Want to get creator, lastmodifier, and other security info for an item in an event sink?

You can extract a considerable amount of security information using the https://schemas.microsoft.com/exchange/security/ namespace. The information returned is in XML, so individual elements need to be extracted from the XML.  The following
vb function  is an example that shows how to get security information.

'-----------------------------------------------------------------------------------
'GetItemSecurityInfo
' This function extracts security information for an item using an
' DispInfo.EventRecord.  This can be used in an Event Sink from a method
' such as IExStoreSyncEvents_OnSyncSave.
'
' Input:
'   ado_rec - This is a DispInfo.EventRecord (ado.record). The pEventInfo
'      parameter from OnSyncSave, etc can be used.
'   sSearchSIDType - Type of SID information - "creator", "lastmodifier", etc.
'      Note: See https://schemas.microsoft.com/exchange/security/ Namespace
'   sSearchValue - The specific value to return - "S:display_name", etc
' Returns:
'   If sSearchValue is not set to "" then
'      The security information for the item is returned.
'   else
'      An XML String containing the SID information is returned.
' Note: if you run the code and check the value of sReturn, you will see an
'   XML document that contains all of the returned items you can extract using
'   the sSearchValue argument.
' Example call:
'   sCreator = GetItemSecurityInfo(ado_rec, "creator", "display_name")
' Note: You will need to set a project reference to Microsoft XML, v4.0
' Note: You can download MSXML 4.0 SP2 fro the following link:
'    MSXML 4.0 Service Pack 2 (Microsoft XML Core Services)
'    <https://www.microsoft.com/downloads/details.aspx?FamilyID=3144b72b-b4f2-46da-b4b6-c5d7485f2b42&displaylang=en>
' Note: for more info, go to:
'    schemas.microsoft.com/exchange/security/ Namespace
'    https://msdn.microsoft.com/library/default.asp?url=/library/en-us/wss/wss/_exch2k_schema_security_namespace.asp
'-----------------------------------------------------------------------------------
Private Function GetItemSecurityInfo(ado_rec As ADODB.Record, sSearchSIDType As String, sSearchValue) As String
        Dim oDoc As New MSXML2.DOMDocument40
        Set oDoc = New MSXML2.DOMDocument40
        Dim oNodeList As IXMLDOMNodeList
        Dim oNode As IXMLDOMNode
       
        Dim sSearchValueW As String
        Dim sReturn As String     ' Return value
        Dim sXML As String        ' Holds the SID information in XML
       
        sXML = ado_rec.Fields("https://schemas.microsoft.com/exchange/security/" & sSearchSIDType)
        oDoc.loadXML sXML       'Load the XML text conaining all the SID information
        'oDoc.Save "c:\test.xml"    ' Uncomment to save to file
       
        If sSearchValue <> "" Then
            sSearchValueW = "S:" & sSearchValue ' See the text returned into sXML for what S: refers to
            Set oNodeList = oDoc.getElementsByTagName(sSearchValueW)  ' Get to the value we are looking for
            Set oNode = oNodeList.nextNode
            sReturn = oNode.Text  ' OK, here it is
        Else
            sReturn = sXML
        End If
       
        GetItemSecurityInfo = sReturn
End Function