Можно ли требовать прав пользователя при открытии второй формы, когда приложение запускается от имени администратора?

#c# #.net #wpf #winforms #wpf-controls

#c# #.net #wpf #winforms #wpf-элементы управления

Вопрос:

Я знаю, что вы можете создать файл манифеста, чтобы указать уровень доступа администратора для всего приложения. Но возможно ли требовать это только для определенной формы?

Ответ №1:

Нет, это невозможно.

Что вы можете сделать: разрешить вашему процессу запускаться без прав доступа. Когда вы обнаружите, что требуется повышение прав, но ваш процесс не запускается с повышением, перезапустите процесс (Process.Запустите) с помощью глагола «runas» и, возможно, какой-либо опции командной строки, которую вы можете оценить во вновь запущенном процессе, чтобы немедленно открыть форму.

 if (!RunningElevated())
{
    // restart as elevated process
    ProcessStartInfo psi = new ProcessStartInfo
    {
        UseShellExecute = true,
        Verb = "runas",
        WorkingDirectory = Environment.CurrentDirectory,
        FileName = Assembly.GetExecutingAssembly().Location,
        Argument = "--open MyForm" // has to be evaluated on the startup code
    };
    var process = Process.Start(psi);
    if (process != null)
        Application.Current.Shutdown(0); // this is for WPF
}