Uprawnienia administratora dla jednej metody

Czy można wymagać uprawnień administratora dla jednej metody?

Coś takiego:

[RequireAdminRightsForThisMethod()]

private void TheMethod(){

    // Do something

}
Author: H.B., 2010-01-07

2 answers

Możesz dodać PrincipalPermission przypisanie metody wymagającej uprawnień administracyjnych do jej wykonania:

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
public void MyMethod()
{
}

Jest to opisane bardziej szczegółowo w następującym artykule:

Zasady bezpieczeństwa i lokalne prawa administratora w C#. Net

Jeśli szukasz sposobu na podniesienie już istniejącego procesu, wątpię, czy jest to możliwe, ponieważ uprawnienia administratora są przyznawane procesowi na poziomie procesu po uruchomieniu (zobacz ten związany pytanie ). Musisz uruchomić aplikację "jako administrator", aby uzyskać pożądane zachowanie.

Istnieją jednak pewne sztuczki, które mogą pozwolić ci robić to, co chcesz, ale ostrzegamy, że może to spowodować poważne zagrożenia bezpieczeństwa. Zobacz następujący wątek na forum MSDN:

Uruchamianie serwera MyElevatedCom bez pytania o uprawnienia administratora od standardowego użytkownika

Update (from comment)

It wydaje się, że jeśli aktualizacja wymaga podniesienia poziomu, aktualizacja aplikacji najlepiej wykonać za pomocą oddzielnego procesu (albo innego pliku wykonywalnego, albo aplikacji wywołanej przełącznikiem wiersza poleceń). Dla tego oddzielnego procesu możesz zażądać wysokości w następujący sposób:

var psi = new ProcessStartInfo();
psi.FileName = "path to update.exe";
psi.Arguments = "arguments for update.exe";
psi.Verb = "runas";

var process = new Process();
process.StartInfo = psi;
process.Start();   
process.WaitForExit();
 83
Author: Dirk Vollmar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:32:34

Metoda może wymagać uprawnień administratora do uruchomienia, ale nie jest możliwe automatyczne podniesienie do administratora podczas wykonywania metody.

 15
Author: SLaks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-07 16:27:25