public static string EnvironmentToString(bool newline) { var environment = new StringBuilder(); environment.Append("Software version: " + Application.ProductVersion); environment.Append(" (" + OsInfo.Bits + " bit)"); if (newline) { environment.AppendLine(); } else { environment.Append(", "); } environment.Append(".NET runtime version: " + Environment.Version); if (IsNet45OrNewer()) { environment.Append("+"); } if (newline) { environment.AppendLine(); } else { environment.Append(", "); } environment.Append("Time: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss zzz")); if (IsWindows) { if (newline) { environment.AppendLine(); } else { environment.Append(", "); } environment.Append(string.Format("OS: {0} {1} {2} (x{3}) {4}", OsInfo.Name, OsInfo.Edition, OsInfo.ServicePack, OsInfo.Bits, OsInfo.VersionString)); if (newline) { environment.AppendLine(); } else { environment.Append(", "); } // Get some important information for fixing GDI related Problems environment.AppendFormat("GDI object count: {0}", User32Api.GetGuiResourcesGdiCount()); if (newline) { environment.AppendLine(); } else { environment.Append(", "); } environment.AppendFormat("User object count: {0}", User32Api.GetGuiResourcesUserCount()); } else { if (newline) { environment.AppendLine(); } else { environment.Append(", "); } environment.AppendFormat("OS: {0}", Environment.OSVersion.Platform); } if (newline) { environment.AppendLine(); } else { environment.Append(", "); } // TODO: Is this needed? // environment.AppendFormat("Surface count: {0}", Surface.Count); return(environment.ToString()); }