My scenario:
I have a page layout that has a user control on it. This user control queries data contained in other pages within the site collection to show a summary of related information. Anonymous uses do not have read access to the list containing the page data so I need to elevate privileges in order to read it. If I elevate by impersonating the site collection owner I'll get data from draft versions of items which I don't want. So, may question is, can I:
a) Impersonate the Contributor or Viewer privileges without having to create a fake user account and grant it permissions to the site, or
b) Can I write a CAML query that only returns data from the most recently approved (published) versions of each item, or
c) Is there some other strategy I could use that doesn't involve brute forcing my way through the versions of each item in the list using the API?
Edit:
After weighing my options I decided to go with the first option. Creating a fake user account seemed to be the least messy and most efficient solution.