# Test #1 - This test exercises all the basic functionalities of the # COM implementation of IAccessControl. # Init a new COM IAccessControl object by passing a NULL IStream pointer # into IPersistStream::Load Exec InitNewACL # I'll add 4 DENY_ACCESS ACEs and 5 GRANT_ACCESS ACEs to the ACL # First, I'll add the GRANT_ACCESS entries to the ACL but before doing that, # I have to set up an access request list locally ToggleAccessPerm COM_RIGHTS_EXECUTE Set TrusteeName RAYLAND\ACTEST1 AddTrustee AccessRequestList Set TrusteeName RAYLAND\ACTEST2 AddTrustee AccessRequestList Set TrusteeName RAYLAND\ACTEST3 AddTrustee AccessRequestList Set TrusteeName RAYLAND\ACTEST4 AddTrustee AccessRequestList Set TrusteeName rayland\administrator AddTrustee AccessRequestList # Add the GRANT_ACCESS ACEs Exec GrantAccessRights #Take a peek at the ACL Exec GetExplicitAccessRights # Goes through the same procedure for DENY_ACCESS ACEs but removes the local access request list first Destroy AccessRequestList Set TrusteeName RAYLAND\ACTEST5 AddTrustee AccessRequestList Set TrusteeName RAYLAND\ACTEST6 AddTrustee AccessRequestList Set TrusteeName RAYLAND\ACTEST7 AddTrustee AccessRequestList Set TrusteeName RAYLAND\ACTEST8 AddTrustee AccessRequestList # Add the DENY_ACCESS ACEs Exec DenyAccessRights # Call GetExplicitAccessRights to see if the ACL has been set up properly Exec GetExplicitAccessRights # Set current trustee to RAYLAND\ADMINISTRATOR and perform access check Set TrusteeName RaYLAnD\adminIstrator # RAYLAND\Administrator should be granted COM_RIGHTS_EXECUTE access Exec IsAccessPermitted # Call IsAccessPermitted to see if the caching mechanism works Exec IsAccessPermitted # Change the client security context to that of RAYLAND\ACTEST2 so I can preform some # access checking for RAYLAND\ACTEST2 SwitchClientCtx ACTEST2 RAYLAND # Set the current trustee to RAYLAND\ACTEST2 Set TrusteeName RAYLAND\ACTEST2 # Call IsAccessPermitted to perform acces checking. ACTEST2 should be granted access # to the object. Exec IsAccessPermitted # Call IsAccessPermitted to see if the caching mechanism works Exec IsAccessPermitted # Revoke some trustees from the ACL and see what happens.... Set TrusteeName RAYLAND\ACTEST4 AddTrustee TrusteeList Exec RevokeExplicitAccessRights Exec GetExplicitAccessRights Destroy TrusteeList Set Trusteename RAYLAND\ACTEST2 AddTrustee TrusteeList Exec RevokeExplicitAccessRights Exec GetExplicitAccessRights # Call GetSizeMax to get the number of bytes required to dsave the ACL Exec GetSizeMax # Save the ACL to a file Exec SaveACL c:\actests\data1 # Init a new ACL Exec InitNewACL # Take a look at the current ACL, it should be empty # Exec GetExplicitAccessRights # Load the ACL back from the same file Exec LoadACL c:\actests\data1 # Take a look at the ACL, it should look the same as before it was saved Exec GetExplicitAccessRights # Revoke two grant ACEs to see what happens Set TrusteeName RAYLAND\ACTEST4 AddTrustee TrusteeList Exec RevokeExplicitAccessRights # Take a look at the resulting ACL Exec GetExplicitAccessRights Destroy TrusteeList Set TrusteeName RAYLAND\ACTEST2 AddTrustee TrusteeList Exec RevokeExplicitAccessRights # Take another peek a the resulting ACL Exec GetExplicitAccessRights # Perform access check for RAYLAND\ACTEST2 to check # if the revoking really works. RAYLAND\ACTEST2 should # be denied access to the object. Set TrusteeName RAYLAND\ACTEST2 Exec IsAccessPermitted # Replace the ACL with a new one Set TrusteeName A Set AccessMode GRANT_ACCESS AddTrustee ExplicitAccessList Set TrusteeName B Set AccessMode DENY_ACCESS AddTrustee ExplicitAccessList Set TrusteeName G Set AccessMode GRANT_ACCESS AddTrustee ExplicitAccessList Set TrusteeName H Set AccessMode DENY_ACCESS AddTrustee ExplicitAccessList Set TrusteeName E Set AccessMode GRANT_ACCESS AddTrustee ExplicitAccessList Set TrusteeName K Set AccessMode DENY_ACCESS AddTrustee ExplicitAccessList Set TrusteeName F Set AccessMode GRANT_ACCESS AddTrustee ExplicitAccessList Set TrusteeName L Set AccessMode DENY_ACCESS AddTrustee ExplicitAccessList Set TrusteeName A Set AccessMode GRANT_ACCESS AddTrustee ExplicitAccessList Exec ReplaceAllAccessRights Exec GetExplicitAccessRights # Kill server and quit Quit # End of Test #1