Uprawnienia administratora dla jednej metody
Czy można wymagać uprawnień administratora dla jednej metody?
Coś takiego:
[RequireAdminRightsForThisMethod()]
private void TheMethod(){
// Do something
}
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:
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();
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.
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