У меня есть приложение C#, .Net 4.6.1 Windows Forms, работающее на платформах Windows Server (2008 или выше), которое должно быть «Запуск от имени администратора». Повышенные привилегии необходимы, потому что приложение изменяет права доступа пользователей к различным папкам (в случае, если это важно для корневого веб-сайта по умолчанию IIS).Обнаружение повышенных привилегий в Windows Server 2008 или выше
Мне не повезло в обнаружении, было ли приложение «Запуск от имени администратора». Если я запустить приложение в обычном режиме (т.е. не как администратор) следующий код
var isAdmin = WindowsIdentity.GetCurrent().Owner.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid);
возвращает true
но код, который изменяет некоторые права доступа пользователя на директории терпит неудачу с недостаточно привилегий Ошибка.
Если я запустил приложение как администратор, вышеуказанная проверка также возвращает true
, но смена прав доступа пользователей работает просто отлично.
Другие попытки я сделал без успеха:
- Использование
GetTokenInformation
метода внутри ADVAPI32.dll как предложено here - Добавление файла манифеста в приложение, где я поставил
requestedExecutionLevel
вrequireAdministrator
Заранее благодарим за любую помощь.
Как обходной путь, который вы могли бы изначально проверить, можете ли вы изменить права доступа в конкретной папке, а если нет, сообщите об этом пользователю о недостаточных правах. К сожалению, у меня нет прямого опыта использования такого кода и я не могу дать полезный ответ :( – Arvo
Спасибо @Arvo. Я реализовал аналогичное обходное решение на данный момент. Все еще хотел бы найти ответ. – Mats
Итак, что на самом деле произошло, когда вы использовали манифест ? –