Может ли пользователь schmoe_j запускать приложение, которое копирует файлы в каталог, к которому не может писать schmoe_j?Разрешения на уровне приложения C#, превышающие пользовательские?
ответ
Нет, разрешения на файлы обрабатываются файловой системой, которая находится на гораздо более низком уровне в системе, чем код C# работает как. Код C# не может напрямую обходить безопасность файловой системы. Если приложение работает как schmoe_j, оно не может записывать в локации на диске, к которым у schmoe_j нет доступа для записи.
Единственное исключение - если у schmoe_j есть резервная копия & права на восстановление, и в этом случае он может писать в любом месте на диске. Обычные пользователи не имеют этой привилегии, потому что это очень опасная привилегия.
Существуют и другие теоретические способы - например, если на ящике находится небезопасная служба, которую можно убедить стандартного пользователя писать в произвольное место на диске. Любые такие случаи - это отверстие безопасности, которое должно быть исправлено.
В зависимости от используемого класса обычно исключается исключение, если у вас нет надлежащих разрешений для записи в каталог.
В качестве примера, в соответствии с MSDN, при вызове File.Create и File.Copy, UnauthorizedAccessException
будет сгенерирован, когда абонент не имеет необходимые разрешения.
Вы можете включить манифест с вашим исполняемым файлом, чтобы запросить, чтобы приложение выполнялось с более высокими привилегиями.
Vista-специфический, но хороший ответ. – dnord
Я думаю, что обычно, как это делается, следует использовать сервис (или сервисное приложение), который работает под повышенными разрешениями, но с очень небольшой площадью поверхности и без GUI. Пользователь взаимодействует с приложением, работающим под более низкими разрешениями, которое будет делать то, что может сделать пользовательская учетная запись, - размещать файлы в папке выпадающего меню, записывать в базу данных и т. Д. Думать, IIS, MMC, TrustedInstaller и т. Д.
Приложение будет выполняется под правами пользователя, если пользователь не может это сделать, приложение не может этого сделать.
ОДНАКО, приложение может попытаться выдать себя за другого пользователя, и в этом случае он сможет получить доступ к этому каталогу. Это связано с тем, что приложение временно набирает права другого пользователя. это то, как ASP.NET работает довольно часто.
Восходящий выстрел заключается в том, что пользователь должен будет предоставить учетные данные выданного пользователя.
Article, демонстрирующий это.
Может ли он запустить приложение? Да. Он будет бросать UnauthorizedAccessException
, когда он пытается скопировать эти файлы, но не раньше.
- 1. Разрешения на уровне лазурного лабиринта
- 2. Android: разрешение на уровне приложения
- 3. Динамические шаблоны директив с использованием разрешения на уровне приложения AngularJS
- 4. Угловые 2 разрешения динамического маршрута и разрешения на уровне компонентов
- 5. Транзакция на уровне приложения
- 6. Перечислить общие сетевые ресурсы Windows и все пользовательские разрешения на уровне
- 7. Пользовательские пользовательские и пользовательские разрешения в Linux
- 8. Разрешения безопасности на уровне строк BigQuery
- 9. Разрешения на уровне поля в рельсах Модель
- 10. разрешения на уровне объекта в Django администратора
- 11. Использование setlocale на уровне объекта или на уровне приложения
- 12. Загрузка файла с разрешения приложения
- 13. Исключение обработки на уровне приложения
- 14. Обновление ActiveMQ на уровне приложения
- 15. @SuppressWarnings аннотация на уровне приложения
- 16. OutputCache На уровне приложения mvc3
- 17. ИНТЕРАКТИВНЫЕ пользовательские разрешения
- 18. Sharepoint: Пользовательские разрешения просмотра
- 19. TYPO3 BE пользовательские разрешения
- 20. Пользовательские разрешения django-revproxy
- 21. Пользовательские роли/разрешения Wordpress
- 22. Пользовательские разрешения JBoss
- 23. Android - ContentProvider - пользовательские разрешения
- 24. Данные на верхнем уровне введите на уровне приложения
- 25. Пользовательские разрешения уровня уровня, помощь с дизайном
- 26. Пользовательские разрешения Django по умолчанию
- 27. Разрешения на уровне поля с использованием CanCanCan или Pundit
- 28. Пользовательские разрешения Yootheme widgetkit
- 29. Пользовательские разрешения в Web.API
- 30. Пользовательские разрешения для просмотров:
Какая версия окон? Сетевой диск или локальная машина? Ответ может отличаться в зависимости от ответов на эти вопросы. –
Windows Server 2003, на сетевом диске. – 2009-08-31 18:27:13