#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
}