2017-02-16 41 views
0

У меня есть метод/событие Form1_Load и я хочу, чтобы дать ему Administrator RightsC# Получить права администратора единого метода

Поскольку в этом методе/Event я связать свою программу с моим расширением, также не хотят, чтобы начать применение в качестве администратора, если я делаю что программа не будет работать correcly

так у меня есть код:

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")] 

private void Form1_Load(object sender, EventArgs e) 
{ 
... 
} 

Но не работает, а мое приложение дает ошибку:

UnauthorizedAccessException

Как я могу это исправить?

+0

Ваш код требует, чтобы пользователь был администратором, но я не думаю, что вы имели в виду это? Вы хотите повысить привилегии пользователя? Это Win Forms? –

+0

Да, нужно, чтобы права администратора выполнялись, и это WinForms – alix54

+0

Я бы посоветовал вам читать и впитывать [Что делать, если две программы сделали это?] (Https://blogs.msdn.microsoft.com/oldnewthing/20050607-00/ ? p = 35413) Раймонда Чэня, прежде чем идти слишком далеко по этому маршруту. –

ответ

0

Вам не понравится этот ответ, но вы не можете поднять пользователя для одного метода, вместо этого вам нужно запросить возвышение для всего приложения при его загрузке.

Пожалуйста, см. https://msdn.microsoft.com/en-us/library/bb756929.aspx?f=255&MSPPError=-2147217396, как это сделать.

Это также полезно https://code.msdn.microsoft.com/windowsapps/CSUACSelfElevation-644673d3

EDIT:

Если у вас есть одна задача, чтобы сделать, как связать расширение, то вы можете написать логику, что в отдельном EXE, который только делает эту задачу. Затем вы можете запустить этот EXE из основной программы с

System.Diagnostics.Process.Start("<path to exe>"); 

условием, что вы следовали советам в приведенной выше ссылке, ваш EXE будет работать и возвышением запроса, и должны быть в состоянии делать то, что вам нужно.

1

«связать мою программу с моим расширением»: ваш дизайн неправильный. Эта ассоциация выполняется при установке вашей программы. И там это не проблема: установщик работает повышенным.

+0

Моя программа не имеет установки, является внешней – alix54