Подтвердить что ты не робот

Обнаружение повышенных привилегий на Windows Server 2008 или выше

У меня есть приложение С#,.Net 4.6.1 Windows Forms, работающее на платформах Windows Server (2008 или выше), которое должно быть "Запуск от имени администратора". Требуются повышенные привилегии, потому что приложение меняет права доступа пользователей к различным папкам (в случае, если это важно для корневого веб-сайта по умолчанию IIS).

Мне не повезло в обнаружении, было ли приложение "Запуск от имени администратора". Если я обычно запускаю приложение (это не как Администратор), следующий код

var isAdmin = WindowsIdentity.GetCurrent().Owner.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid);

возвращает true, но код, который изменяет некоторые права доступа пользователя к каталогу, выходит из строя с ошибкой Недопустимые привилегии.

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

Другие попытки, которые я сделал без успеха:

  • Используя метод GetTokenInformation внутри файла advapi32.dll, как предложено здесь
  • Добавление файла манифеста в приложение, где я установил requestedExecutionLevel в requireAdministrator

Заранее благодарим за помощь.

4b9b3361

Ответ 1

Попробуйте изменить права доступа к известной папке, и если есть исключение, вы знаете, что программа не была запущена как администратор.

Ответ 2

Следующее должно работать (надеюсь, у меня есть клиент Windows, и он работает со мной).

var Identity = WindowsIdentity.GetCurrent();
var Principal = new WindowsPrincipal(Identity);
bool IsAdmin = Principal.IsInRole(WindowsBuiltInRole.Administrator);