У меня есть C# приложение WinForms, в котором мне нужно выполнить некоторые предварительные проверки перед запуском полной версии приложения. Например, одна из таких проверок - убедиться, что приложение работает с правами администратора.
Проблема в том, что эти проверки выполняются во время конструктора основного класса моего приложения. Поэтому, если я пытаюсь выйти, используя Application.Exit()
в конструкторе, это не сработает. Я знаю, что есть причина, по которой это Application.Exit()
работает после завершения построения , как мне изящно выйти из приложения во время вызова конструктора ?
Я не смог найти любое переполнение стека, показывающее такой ответ С пример кода.
ПРИМЕЧАНИЕ: Проверка административных привилегий - это всего лишь одна из нескольких различных проверок, которые я делаю во время вызова конструктора поэтому, пожалуйста, не предлагайте решение, специально решающее JUST для этой проверки, которую я показал в качестве примера.
Мой код:
В приведенном ниже коде я увижу «Выход» окно сообщения, но исполняемый файл никогда не заканчивается - он продолжает работать.
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new SomeClass());
}
}
class SomeClass : ApplicationContext
{
public SomeClass()
{
if (!RunningAsAdministrator())
{
MessageBox.Show("Exiting");
Application.Exit();
}
}
public static bool RunningAsAdministrator()
{
return (new WindowsPrincipal(WindowsIdentity.GetCurrent()))
.IsInRole(WindowsBuiltInRole.Administrator);
}
}