示例#1
0
        // Token: 0x0600025A RID: 602 RVA: 0x0000FCC4 File Offset: 0x0000DEC4
        private void Application_Start(object sender, EventArgs e)
        {
            Globals.InitializeMultiPerfCounterInstance("AutoDisc");
            Microsoft.Exchange.Diagnostics.Components.Autodiscover.ExTraceGlobals.FrameworkTracer.TraceDebug <string>((long)this.GetHashCode(), "[Application_Start()] Privileges.RemoveAllExcept(,,\"{0}\");", "MSExchangeAutodiscoverAppPool");
            string[] privilegesToKeep = new string[]
            {
                "SeAuditPrivilege",
                "SeChangeNotifyPrivilege",
                "SeCreateGlobalPrivilege"
            };
            int num = Privileges.RemoveAllExcept(privilegesToKeep, "MSExchangeAutodiscoverAppPool");

            if (num != 0)
            {
                Microsoft.Exchange.Diagnostics.Components.Autodiscover.ExTraceGlobals.FrameworkTracer.TraceError <TimeSpan, int>((long)this.GetHashCode(), "[Application_Start()] 'Failed to remove privileges, exiting. Time=\"{0}\",win32Error=\"{1}\"'", ExDateTime.Now.TimeOfDay, num);
                Environment.Exit(num);
            }
            PerformanceCounters.Initialize();
            ExchangeDiagnosticsHelper.RegisterDiagnosticsComponents();
            Microsoft.Exchange.Diagnostics.Components.Autodiscover.ExTraceGlobals.FrameworkTracer.TraceDebug((long)this.GetHashCode(), "[Application_Start()] 'ApplicationStarted'");
            Common.EventLog.LogEvent(AutodiscoverEventLogConstants.Tuple_InfoWebApplicationStart, Common.PeriodicKey, new object[0]);
            string text = ExEnvironment.IsTest ? "E12" : "E12IIS";

            ExWatson.Register(text);
            Microsoft.Exchange.Diagnostics.Components.Autodiscover.ExTraceGlobals.FaultInjectionTracer.RegisterExceptionInjectionCallback(new ExceptionInjectionCallback(FaultInjection.Callback));
            Microsoft.Exchange.Diagnostics.Components.Autodiscover.ExTraceGlobals.FrameworkTracer.TraceDebug <string, string>((long)this.GetHashCode(), "[Application_Start()] ExWatson.Register(\"{0}\");AppName=\"{1}\";", text, ExWatson.AppName);
        }
示例#2
0
        // Token: 0x06000001 RID: 1 RVA: 0x000020D0 File Offset: 0x000002D0
        public static void Main(string[] args)
        {
            List <string> list = new List <string>();

            list.Add("SeAuditPrivilege");
            list.Add("SeChangeNotifyPrivilege");
            list.Add("SeCreateGlobalPrivilege");
            list.Add("SeImpersonatePrivilege");
            bool isSystem;

            using (WindowsIdentity current = WindowsIdentity.GetCurrent())
            {
                isSystem = current.IsSystem;
            }
            if (isSystem)
            {
                list.Add("SeIncreaseQuotaPrivilege");
                list.Add("SeAssignPrimaryTokenPrivilege");
            }
            int num = Privileges.RemoveAllExcept(list.ToArray());

            if (num != 0)
            {
                Program.main.StopService(Strings.PrivilegeRemovalFailure(num), true, false, false);
            }
            ExWatson.Init();
            AppDomain.CurrentDomain.UnhandledException += Program.MainUnhandledExceptionHandler;
            if (!Program.AddTokenReadPermissionForAdminGroup())
            {
                ExTraceGlobals.GeneralTracer.TraceDebug(0L, "Failed to update the process security descriptor with TOKEN_READ. The result is the managed debugger may fail to attach.");
            }
            Program.main.Run(args);
            Program.Exit(Program.main.immediateRetryAfterExit ? 200 : 0);
        }
        private static void Main(string[] args)
        {
            new LocalizedString("Workaround for bug # 72378");
            int num = Privileges.RemoveAllExcept(AssistantsService.requiredPrivileges);

            if (num != 0)
            {
                Environment.Exit(num);
            }
            ExWatson.Register();
            ExWatson.RegisterReportAction(new WatsonRegKeyReportAction("HKLM\\SYSTEM\\CurrentControlSet\\Services\\MSExchangeIS\\ImagePath"), WatsonActionScope.Process);
            AssistantsService.ReadRegParams();
            Globals.InitializeMultiPerfCounterInstance("MSExchMbxAsst");
            ResourceHealthMonitorManager.Initialize(ResourceHealthComponent.Assistants);
            AssistantsService service = new AssistantsService();

            if (Environment.UserInteractive && args.Length >= 1 && string.Compare(args[0], "-crash", true) == 0)
            {
                throw new Exception("Startup crash to test ExWatson stuff");
            }
            if (Environment.UserInteractive && args.Length >= 1 && string.Compare(args[0], "-console", true) == 0)
            {
                AssistantsService.TracerPfd.TracePfd <int>(3L, "PFD IWS {0} Starting the Mailbox Assistants Service in Console Mode", 28055);
                ExServiceBase.RunAsConsole(service);
                return;
            }
            ServiceBase.Run(service);
        }
        // Token: 0x06000014 RID: 20 RVA: 0x0000236C File Offset: 0x0000056C
        private static int MainInternal(string[] args)
        {
            string userName = Environment.UserName;

            DagMgmtService.Tracer.TraceDebug <string>(0L, "Running as {0}", userName);
            int num = Privileges.RemoveAllExcept(DagMgmtService.requiredPrivileges);

            if (num != 0)
            {
                return(num);
            }
            Globals.InitializeSinglePerfCounterInstance();
            bool flag  = !DagMgmtService.IsRunningAsService();
            bool flag2 = false;
            bool flag3 = false;

            foreach (string text in args)
            {
                if (DagMgmtService.IsArgumentEqual(text, "-wait"))
                {
                    flag3 = true;
                }
                else
                {
                    DagMgmtService.ReportError("Invalid option specified :{0}\n", new object[]
                    {
                        text
                    });
                    flag2 = true;
                }
            }
            if (flag2)
            {
                DagMgmtService.Tracer.TraceError(0L, "Invalid argument specified. Exiting process.");
                return(1);
            }
            if (flag)
            {
                DagMgmtService.Tracer.TraceDebug <string, DateTime>(0L, "{0} Service starting in console mode at {1}", DagMgmtService.serviceName, DateTime.UtcNow);
                Console.WriteLine("Starting {0}, running in console mode.", Assembly.GetExecutingAssembly().GetName().Name);
                if (flag3)
                {
                    Console.WriteLine("Press <ENTER> to continue.");
                    Console.ReadLine();
                }
                ExServiceBase.RunAsConsole(new DagMgmtService(flag));
            }
            else
            {
                ServiceBase.Run(new DagMgmtService(flag));
            }
            return(0);
        }
示例#5
0
        private void ExecuteApplicationStart(object sender, EventArgs e)
        {
            int num = 0;

            num = Privileges.RemoveAllExcept(new string[]
            {
                "SeAuditPrivilege",
                "SeChangeNotifyPrivilege",
                "SeCreateGlobalPrivilege",
                "SeImpersonatePrivilege",
                "SeIncreaseQuotaPrivilege",
                "SeAssignPrimaryTokenPrivilege",
                "SeTcbPrivilege"
            }, "MSExchangeServicesSyncPool");
            if (num != 0)
            {
                string name;
                using (WindowsIdentity current = WindowsIdentity.GetCurrent())
                {
                    name = current.Name;
                }
                AirSyncDiagnostics.LogPeriodicEvent(AirSyncEventLogConstants.Tuple_SetPrivilegesFailure, "SetPrivilegesFailure: " + name, new string[]
                {
                    name,
                    num.ToString(CultureInfo.InvariantCulture)
                });
                Environment.Exit(num);
            }
            ExWatson.Init("E12");
            AppDomain.CurrentDomain.UnhandledException += Global.HandledExceptionProxy;
            Globals.InitializeMultiPerfCounterInstance("AirSync");
            ExRpcModule.Bind();
            AirSyncDiagnostics.TraceInfo <ResourceManagerHandle>(ExTraceGlobals.RequestsTracer, null, "AuthzAuthorization.ResourceManagerHandle static instance loaded", AuthzAuthorization.ResourceManagerHandle);
            AirSyncSyncStateTypeFactory.EnsureSyncStateTypesRegistered();
            FolderSyncState.RegisterCustomDataVersioningHandler(new FolderSyncState.HandleCustomDataVersioningDelegate(FolderSyncStateCustomDataInfo.HandlerCustomDataVersioning));
            FolderHierarchySyncState.RegisterCustomDataVersioningHandler(new FolderHierarchySyncState.HandleCustomDataVersioningDelegate(FolderHierarchySyncStateCustomDataInfo.HandlerCustomDataVersioning));
            EventQueue.PollingInterval = GlobalSettings.EventQueuePollingInterval;
            this.resetAutoBlockedDeviceCounterTimer = new Timer(new TimerCallback(Global.ResetAutoBlockedDeviceCounter), null, 86400000, 86400000);
        }
        // Token: 0x06000005 RID: 5 RVA: 0x00002158 File Offset: 0x00000358
        internal static void Main(string[] args)
        {
            List <string> list = new List <string>();

            list.Add("SeAuditPrivilege");
            list.Add("SeChangeNotifyPrivilege");
            list.Add("SeCreateGlobalPrivilege");
            list.Add("SeImpersonatePrivilege");
            bool isSystem;

            using (WindowsIdentity current = WindowsIdentity.GetCurrent())
            {
                isSystem = current.IsSystem;
            }
            if (isSystem)
            {
                list.Add("SeIncreaseQuotaPrivilege");
                list.Add("SeAssignPrimaryTokenPrivilege");
            }
            int num = Privileges.RemoveAllExcept(list.ToArray());

            if (num != 0)
            {
                Environment.Exit(num);
            }
            Globals.InitializeSinglePerfCounterInstance();
            ExWatson.Register();
            bool flag  = !Environment.UserInteractive;
            bool flag2 = false;
            bool flag3 = false;

            foreach (string text in args)
            {
                if (text.StartsWith("-?", StringComparison.OrdinalIgnoreCase))
                {
                    TransportService.Usage();
                    Environment.Exit(0);
                }
                else if (text.StartsWith("-console", StringComparison.OrdinalIgnoreCase))
                {
                    flag2 = true;
                }
                else if (text.StartsWith("-wait", StringComparison.OrdinalIgnoreCase))
                {
                    flag3 = true;
                }
            }
            if (!flag)
            {
                if (!flag2)
                {
                    TransportService.Usage();
                    Environment.Exit(0);
                }
                Console.WriteLine("Starting {0}, running in console mode.", Assembly.GetExecutingAssembly().GetName().Name);
                if (flag3)
                {
                    Console.WriteLine("Press ENTER to continue.");
                    Console.ReadLine();
                }
            }
            SettingOverrideSync.Instance.Start(true);
            if (!VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).Transport.ADExceptionHandling.Enabled)
            {
                TransportService.adConfigurationSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 324, "Main", "f:\\15.00.1497\\sources\\dev\\Transport\\src\\TransportService\\TransportService.cs");
            }
            else
            {
                ADOperationResult adoperationResult = ADNotificationAdapter.TryRunADOperation(delegate()
                {
                    TransportService.adConfigurationSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 334, "Main", "f:\\15.00.1497\\sources\\dev\\Transport\\src\\TransportService\\TransportService.cs");
                }, 0);
                if (!adoperationResult.Succeeded)
                {
                    ExTraceGlobals.ServiceTracer.TraceError <Exception>(0L, "Error when getting AD configuration session: {0}", adoperationResult.Exception);
                    TransportService.logger.LogEvent(TransportEventLogConstants.Tuple_MSExchangeTransportInitializationFailure, null, new object[]
                    {
                        adoperationResult.Exception.ToString()
                    });
                    Environment.Exit(1);
                }
            }
            TransportService.transportService = new TransportService(flag);
            if (!TransportService.transportService.Initialize())
            {
                ExTraceGlobals.ServiceTracer.TraceError(0L, "Failed to initialize the service. Exiting.");
                ProcessManagerService.StopService();
            }
            if (!flag)
            {
                TransportService.transportService.OnStartInternal(args);
                bool flag4 = false;
                while (!flag4)
                {
                    Console.WriteLine("Enter 'q' to shutdown.");
                    string text2 = Console.ReadLine();
                    if (string.IsNullOrEmpty(text2))
                    {
                        break;
                    }
                    switch (text2[0])
                    {
                    case 'q':
                        flag4 = true;
                        break;

                    case 'r':
                        TransportService.transportService.OnCustomCommandInternal(200);
                        break;

                    case 'u':
                        TransportService.transportService.OnCustomCommandInternal(201);
                        break;
                    }
                }
                Console.WriteLine("Shutting down ...");
                TransportService.transportService.OnStopInternal();
                Console.WriteLine("Done.");
                return;
            }
            ServiceBase.Run(TransportService.transportService);
        }
        // Token: 0x06000007 RID: 7 RVA: 0x0000289C File Offset: 0x00000A9C
        public static void Main(string[] args)
        {
            int num = Privileges.RemoveAllExcept(new string[]
            {
                "SeAuditPrivilege",
                "SeChangeNotifyPrivilege",
                "SeCreateGlobalPrivilege"
            });

            if (num != 0)
            {
                Environment.Exit(num);
            }
            ExWatson.Register();
            AntispamUpdateSvc.runningAsService = !Environment.UserInteractive;
            bool flag = false;
            int  i    = 0;

            while (i < args.Length)
            {
                string text = args[i];
                string a;
                if ((a = text.Trim()) == null)
                {
                    goto IL_BD;
                }
                if (!(a == "-?"))
                {
                    if (!(a == "-console"))
                    {
                        if (!(a == "-wait"))
                        {
                            if (!(a == "-60"))
                            {
                                goto IL_BD;
                            }
                            AntispamUpdateSvc.pollInterval = 60;
                        }
                        else
                        {
                            AntispamUpdateSvc.waitToContinue = true;
                        }
                    }
                    else
                    {
                        flag = true;
                    }
                }
                else
                {
                    AntispamUpdateSvc.Usage();
                    Environment.Exit(0);
                }
IL_D3:
                i++;
                continue;
IL_BD:
                Console.WriteLine("{0}", text);
                AntispamUpdateSvc.Usage();
                Environment.Exit(0);
                goto IL_D3;
            }
            if (AntispamUpdateSvc.runningAsService)
            {
                ServiceBase.Run(new AntispamUpdateSvc());
                return;
            }
            if (flag)
            {
                AntispamUpdateSvc.RunConsole();
                return;
            }
            Console.WriteLine("Use the '-console' argument to run from the command line");
            AntispamUpdateSvc.Usage();
            Environment.Exit(0);
        }
示例#8
0
        // Token: 0x06000110 RID: 272 RVA: 0x00008194 File Offset: 0x00006394
        public static void Main(string[] args)
        {
            int num = Privileges.RemoveAllExcept(new string[]
            {
                "SeAuditPrivilege",
                "SeChangeNotifyPrivilege",
                "SeCreateGlobalPrivilege"
            });

            if (num != 0)
            {
                Environment.Exit(num);
            }
            if (!Debugger.IsAttached)
            {
                ExWatson.Register();
            }
            LogSearchService.runningAsService = !Environment.UserInteractive;
            bool flag  = false;
            bool flag2 = false;

            foreach (string text in args)
            {
                if (text.StartsWith("-?", StringComparison.Ordinal))
                {
                    LogSearchService.Usage();
                    Environment.Exit(0);
                }
                else if (text.StartsWith("-console"))
                {
                    flag = true;
                }
                else if (text.StartsWith("-wait"))
                {
                    flag2 = true;
                }
            }
            Globals.InitializeMultiPerfCounterInstance("LogSearchSvc");
            ADSession.DisableAdminTopologyMode();
            if (!LogSearchService.runningAsService)
            {
                if (!flag)
                {
                    LogSearchService.Usage();
                    Environment.Exit(0);
                }
                Console.WriteLine("Starting {0}, running in console mode.", Assembly.GetExecutingAssembly().GetName().Name);
                if (flag2)
                {
                    Console.WriteLine("Press ENTER to continue.");
                    Console.ReadLine();
                }
            }
            SettingOverrideSync.Instance.Start(true);
            if (!VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).Transport.ADExceptionHandling.Enabled)
            {
                LogSearchService.logSearchService = new LogSearchService(!LogSearchService.runningAsService);
            }
            else
            {
                ADOperationResult adoperationResult = ADNotificationAdapter.TryRunADOperation(delegate()
                {
                    LogSearchService.logSearchService = new LogSearchService(!LogSearchService.runningAsService);
                }, 0);
                if (!adoperationResult.Succeeded)
                {
                    ExTraceGlobals.ServiceTracer.TraceError <Exception>(0L, "Create Log Search Service failed: {0}", adoperationResult.Exception);
                    Environment.Exit(1);
                }
            }
            try
            {
                Kerberos.FlushTicketCache();
            }
            catch (Win32Exception arg)
            {
                ExTraceGlobals.ServiceTracer.TraceDebug <Win32Exception>(0L, "MsExchangeLogSearch caught a Win32Exception when flushing the Kerberos Ticket Cache at startup: {0}", arg);
            }
            if (!LogSearchService.runningAsService)
            {
                LogSearchService.logSearchService.OnStartInternal(args);
                bool flag3 = false;
                while (!flag3)
                {
                    Console.WriteLine("Enter 'q' to shutdown.");
                    string text2 = Console.ReadLine();
                    if (string.IsNullOrEmpty(text2))
                    {
                        break;
                    }
                    switch (text2[0])
                    {
                    case 'q':
                        flag3 = true;
                        break;

                    case 's':
                        LogSearchService.logSearchService.sessionManager.ShowSessions();
                        break;
                    }
                }
                Console.WriteLine("Shutting down ...");
                LogSearchService.logSearchService.OnStopInternal();
                Console.WriteLine("Done.");
                return;
            }
            ServiceBase.Run(LogSearchService.logSearchService);
        }
        // Token: 0x0600000E RID: 14 RVA: 0x000022C0 File Offset: 0x000004C0
        public static void Main(string[] args)
        {
            CommonDiagnosticsLog.Initialize(HostId.MailboxTransportSubmissionService);
            MailboxTransportSubmissionService.LogStage(MailboxTransportSubmissionService.Stage.StartProcess);
            int num = Privileges.RemoveAllExcept(new string[]
            {
                "SeAuditPrivilege",
                "SeChangeNotifyPrivilege",
                "SeCreateGlobalPrivilege"
            });

            if (num != 0)
            {
                Environment.Exit(num);
            }
            MailboxTransportSubmissionService.LogStage(MailboxTransportSubmissionService.Stage.RegisterWatson);
            ExWatson.Register();
            MailboxTransportSubmissionService.LogStage(MailboxTransportSubmissionService.Stage.RegisterWatsonAction);
            ExWatson.RegisterReportAction(new WatsonRegKeyReportAction(MailboxTransportSubmissionService.watsonRegKeyReportActionString), WatsonActionScope.Process);
            MailboxTransportSubmissionService.runningAsService = !Environment.UserInteractive;
            bool flag  = false;
            bool flag2 = false;

            foreach (string text in args)
            {
                if (text.StartsWith("-?", StringComparison.Ordinal))
                {
                    MailboxTransportSubmissionService.Usage();
                    Environment.Exit(0);
                }
                else if (text.StartsWith("-console"))
                {
                    flag = true;
                }
                else if (text.StartsWith("-wait"))
                {
                    flag2 = true;
                }
            }
            if (!MailboxTransportSubmissionService.runningAsService)
            {
                if (!flag)
                {
                    MailboxTransportSubmissionService.Usage();
                    Environment.Exit(0);
                }
                Console.WriteLine("Starting {0}, running in console mode.", Assembly.GetExecutingAssembly().GetName().Name);
                if (flag2)
                {
                    Console.WriteLine("Press ENTER to continue.");
                    Console.ReadLine();
                }
            }
            MailboxTransportSubmissionService.LogStage(MailboxTransportSubmissionService.Stage.InitializePerformanceCounterInstance);
            Globals.InitializeSinglePerfCounterInstance();
            SettingOverrideSync.Instance.Start(true);
            MailboxTransportSubmissionService.LogStage(MailboxTransportSubmissionService.Stage.LoadLatencyTrackerConfiguration);
            try
            {
                LatencyTracker.Configuration = TransportAppConfig.LatencyTrackerConfig.Load();
            }
            catch (ConfigurationErrorsException)
            {
            }
            MailboxTransportSubmissionService.LogStage(MailboxTransportSubmissionService.Stage.LoadTransportAppConfig);
            string text2;

            if (!Components.TryLoadTransportAppConfig(out text2))
            {
                MailboxTransportSubmissionEventLogger.LogEvent(MSExchangeSubmissionEventLogConstants.Tuple_SubmissionServiceStartFailure, null, new object[]
                {
                    text2
                });
                Environment.Exit(1);
            }
            MailboxTransportSubmissionService.LogStage(MailboxTransportSubmissionService.Stage.CreateService);
            MailboxTransportSubmissionService.mailboxTransportSubmissionService = new MailboxTransportSubmissionService();
            MailboxTransportSubmissionService.LogStage(MailboxTransportSubmissionService.Stage.RunService);
            if (!MailboxTransportSubmissionService.runningAsService)
            {
                ExServiceBase.RunAsConsole(MailboxTransportSubmissionService.mailboxTransportSubmissionService);
                return;
            }
            ServiceBase.Run(MailboxTransportSubmissionService.mailboxTransportSubmissionService);
        }
示例#10
0
        // Token: 0x06000356 RID: 854 RVA: 0x0000D224 File Offset: 0x0000B424
        internal void ExecuteApplicationStart(object sender, EventArgs e)
        {
            ExTraceGlobals.CoreCallTracer.TraceDebug(0L, "Global.Application_Start");
            try
            {
                int num = Privileges.RemoveAllExcept(new string[]
                {
                    "SeAuditPrivilege",
                    "SeChangeNotifyPrivilege",
                    "SeCreateGlobalPrivilege",
                    "SeImpersonatePrivilege",
                    "SeIncreaseQuotaPrivilege",
                    "SeAssignPrimaryTokenPrivilege"
                }, "MSExchangeOWAAppPool");
                if (num != 0)
                {
                    throw new OwaWin32Exception(num, "Failed to remove unnecessary privileges");
                }
                if (BaseApplication.IsRunningDfpowa)
                {
                    string          localPath   = new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath;
                    DirectoryInfo[] directories = Directory.GetParent(Directory.GetParent(localPath).FullName).GetDirectories("Config");
                    if (directories.Length > 0)
                    {
                        VariantConfiguration.Initialize(directories[0].FullName);
                    }
                }
                string applicationName = this.IsPreCheckinApp ? "PCDFOWA" : "OWA";
                Globals.InitializeMultiPerfCounterInstance(applicationName);
                Globals.Initialize();
                Kerberos.FlushTicketCache();
                ExRpcModule.Bind();
                this.ExecuteApplicationSpecificStart();
            }
            catch (OwaWin32Exception ex)
            {
                ExTraceGlobals.CoreTracer.TraceDebug <int>(0L, "Application initialization failed with a win32 error: {0}", ex.LastError);
                Globals.InitializationError = ex;
                return;
            }
            catch (Exception initializationError)
            {
                ExTraceGlobals.CoreTracer.TraceDebug(0L, "Application initialization failed");
                Globals.InitializationError = initializationError;
                throw;
            }
            Globals.IsInitialized = true;
            ExTraceGlobals.CoreTracer.TraceDebug(0L, "Application initialization succeeded");
            int id = Process.GetCurrentProcess().Id;

            if (Globals.IsPreCheckinApp)
            {
                OwaDiagnostics.Logger.LogEvent(ClientsEventLogConstants.Tuple_DfpOwaStartedSuccessfully, string.Empty, new object[]
                {
                    id
                });
                return;
            }
            OwaDiagnostics.Logger.LogEvent(ClientsEventLogConstants.Tuple_OwaStartedSuccessfully, string.Empty, new object[]
            {
                id
            });
            OwaDiagnostics.PublishMonitoringEventNotification(ExchangeComponent.Owa.Name, "OwaWebAppStarted", "Outlook Web App started successfully", ResultSeverityLevel.Error);
        }
示例#11
0
        // Token: 0x0600002F RID: 47 RVA: 0x00002CA0 File Offset: 0x00000EA0
        public static void Main(string[] args)
        {
            ThrottlingService.StartStopBreadcrumbs.Drop("Execution began", new object[0]);
            int num = Privileges.RemoveAllExcept(new string[]
            {
                "SeAuditPrivilege",
                "SeChangeNotifyPrivilege",
                "SeCreateGlobalPrivilege"
            });

            if (num != 0)
            {
                ThrottlingService.StartStopBreadcrumbs.Drop("Failed to remove excessive privileges; Win32 error: {0}", new object[]
                {
                    num
                });
                ThrottlingService.tracer.TraceError <int>(0L, "Failed to remove excessive privileges; Win32 error: {0}", num);
                ThrottlingService.eventLogger.LogEvent(ThrottlingServiceEventLogConstants.Tuple_RemovePrivilegesFailure, null, new object[]
                {
                    num
                });
                Environment.Exit(num);
            }
            ExWatson.Register();
            ThrottlingService.runningAsService = !Environment.UserInteractive;
            Globals.InitializeSinglePerfCounterInstance();
            bool flag  = false;
            bool flag2 = false;

            foreach (string text in args)
            {
                if (text.StartsWith("-?", StringComparison.Ordinal))
                {
                    ThrottlingService.Usage();
                    Environment.Exit(0);
                }
                else if (text.StartsWith("-console"))
                {
                    flag = true;
                }
                else if (text.StartsWith("-wait"))
                {
                    flag2 = true;
                }
            }
            ThrottlingService.StartStopBreadcrumbs.Drop("runningAsService={0}", new object[]
            {
                ThrottlingService.runningAsService
            });
            if (!ThrottlingService.runningAsService)
            {
                if (!flag)
                {
                    ThrottlingService.Usage();
                    ThrottlingService.StartStopBreadcrumbs.Drop("Usage shown", new object[0]);
                    Environment.Exit(0);
                }
                Console.WriteLine("Starting {0}, running in console mode.", Assembly.GetExecutingAssembly().GetName().Name);
                if (flag2)
                {
                    ThrottlingService.StartStopBreadcrumbs.Drop("Waiting for user input to proceed with initialization", new object[0]);
                    Console.WriteLine("Press ENTER to continue.");
                    Console.ReadLine();
                }
            }
            ThrottlingService.instance = new ThrottlingService();
            if (!ThrottlingService.runningAsService)
            {
                ExServiceBase.RunAsConsole(ThrottlingService.instance);
            }
            else
            {
                ServiceBase.Run(ThrottlingService.instance);
            }
            ThrottlingService.StartStopBreadcrumbs.Drop("Execution ended", new object[0]);
        }