You can Try this
protected override void CreateChildControls()
{
base.CreateChildControls();
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPServiceCollection services = SPFarm.Local.Services;
foreach (SPService curService in services)
{
if (curService is SPWebService)
{
SPWebService currentwebservice =(SPWebService) curService;
foreach (SPWebApplication webapp in currentwebservice.WebApplications)
{
//get all Sites from webapp
foreach (SPSite site in webapp.Sites)
{
this.Controls.Add(new Literal() { Text = "SiteUrl "+site.Url });
using (SPWeb rootweb = site.RootWeb)
{
this.Controls.Add(new Literal() { Text = "RootWebUrl: " + rootweb.Url });
this.Controls.Add(new Literal() { Text = "Title: " + rootweb.Title });
}
if (site != null)
site.Dispose();
}
}
}
}
});
}