De la documentación. Parece que quieres usar ejecutar anónimamente.
Apex generalmente se ejecuta en el contexto del sistema; es decir, los permisos actuales del usuario, la seguridad a nivel de campo y las reglas de uso compartido no se tienen en cuenta durante la ejecución del código. Las únicas excepciones a esta regla son el código Apex que se ejecuta con la llamada executeAnonymous. executeAnonymous siempre se ejecuta con todos los permisos del usuario actual. Para obtener más información sobre executeAnonymous, vea Bloques anónimos.
Aunque Apex no impone permisos de nivel de objeto y de campo de forma predeterminada, puede aplicar estos permisos en su código llamando explícitamente a los métodos de resultado de descripción de sObject (de Schema.DescribeSObjectResult) y el campo describe los métodos de resultado (de Schema.DescribeFieldResult) que verifican los niveles de permiso de acceso del usuario actual. De esta forma, puede verificar si el usuario actual tiene los permisos necesarios, y solo si tiene suficientes permisos, puede realizar una operación DML específica o una consulta.
Por ejemplo, puede llamar a los métodos isAccessible, isCreateable o isUpdateable de Schema.DescribeSObjectResult para verificar si el usuario actual ha leído, creado o actualizado el acceso a un sObject, respectivamente. De forma similar, Schema.DescribeFieldResult expone estos métodos de control de acceso a los que puede llamar para verificar el acceso de lectura, creación o actualización actual del usuario para un campo. Además, puede llamar al método isDeletable proporcionado por Schema.DescribeSObjectResult para verificar si el usuario actual tiene permiso para eliminar un sObject específico.
http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_classes_perms_enforcing.htm#kanchor431
¿Alguna vez encontrar una solución a esto? – turbo2oh