PRB: ACL: Outlook 2000 Doesn't Properly Read ACL Settings

ID: Q237924


The information in this article applies to:
  • Exchange Development Kit (EDK), version 5.5
  • Microsoft Outlook 2000
  • Collaboration Data Objects (CDO), version 1.21


SYMPTOMS

When you try to open the Calendar folder, where the permissions have been set using the ACL object with Microsoft Outlook 2000, the following error will appear:

"Unable to display folder".


RESOLUTION

On the computer where the permissions were to be set programmatically, run Microsoft Outlook 2000 and right-click on the Calendar folder. Choose Properties and select the Permissions tab to verify the access permissions for that folder. Do not make any changes to the permissions listed and click OK to close the dialog box.

You will now be able to access the Calendar folder with Outlook 2000 without an error.


MORE INFORMATION

Steps to Reproduce Behavior

  1. Register the ACL.dll from the Platform SDK on the computer that you are going to use to run the code that sets the permissions.


  2. Create a new Microsoft Visual Basic project.


  3. Add a reference to both "Microsoft Exchange 5.5 ACL Type Library 1.0" and "Microsoft CDO 1.21 library."


  4. Cut and paste the following code to the project:


  5. 
    
    Dim strMailbox, As String
    Dim strServer As String
    Dim objFolder As Folder
    Dim objacls As ACLObject
    Dim myAce As ACE
    Dim objFolderAces As Object
    Dim CDOSession As Session
    Dim objstore As InfoStore
    
    Sub Main()
                    
            Set CDOSession = CreateObject("MAPI.Session")
            strServer = "<Server Name>"
            strMailbox = "<Mailbox Name>"
            CDOSession.Logon "", "", True, True, 0, True, strServer & vbLf & strMailbox
            Set objstore = CDOSession.GetInfoStore()
            Set objFolder = objstore.RootFolder.Folders("Calendar")
        
            ' get the aclsobject for the folder
            Set objacls = CreateObject("MSExchange.aclobject")
            Set objacls.CDOItem = objFolder  ' set the CDO folder to CDOItem
            Set objFolderAces = objacls.ACEs ' get ACEs for folder
            
            For Each myAce In objFolderAces
                If myAce.ID = "ID_ACL_DEFAULT" Then
                    myAce.Rights = ROLE_OWNER
                    objacls.Update
                End If
            Next
    
            'Clean up
            Set objstore = Nothing
            Set objFolder = Nothing
            Set objacls = Nothing
            Set objFolderAces = Nothing
            
            'Logoff Session
            CDOSession.Logoff
            Set CDOSession = Nothing
    End Sub
    
     
  6. Run the code against an Exchange mailbox. The code will change the permissions of "Default" to "Owner" on the Calendar folder.


  7. Try to access the Calendar folder from Microsoft Outlook 2000 (Go to the File/Open/Other User's Folders).


RESULT:

You will receive the following error:
"Unable to display folder"

Additional query words: ACL Object

Keywords : kbCDO kbCDO121 kbMsg kbOutlook kbVBp kbEDK550 kbGrpMsg kbDSupport
Version : WINDOWS:1.21,2000,5.5
Platform : WINDOWS
Issue type : kbprb


Last Reviewed: October 15, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.