#c_sharp #wpf #xaml #drag_n_drop
Сделал GUI для серверной части системы, и начал было делать сам сервер, но при запуске приложения от имени администратора событие DragOver тупо не вызывается. При обычном запуске все ОК. Для чистоты эксперимента создал новое решение, где с окном из такого кода:private void UIElement_OnDragOver(object sender, DragEventArgs e) { e.Effects = DragDropEffects.Copy; } private void UIElement_OnDrop(object sender, DragEventArgs e) { } Результат тот же самый.
Ответы
Ответ 1
Это защита. UAC и всё такое. Если приложение, из которого производится перенос, имеет уровень доступа ниже, чем приложение, в которое переносится перенос, то операция запрещается на уровне операционной системы. Соответственно, нельзя перенести что-либо из приложения, запущенного под юзером, в приложение, запущенное под админом. А вот наоборот — можно. Код здесь совершенно не при чём. Вы можете запустить любое приложение, поддерживающее drag-n-drop, под админом, и убедиться, что на него нельзя ничего перенести из программ, запущенных не из-под админа. См. Q: Why Doesn’t Drag-and-Drop work when my Application is Running Elevated? – A: Mandatory Integrity Control and UIPI для более подробного объяснения. Если требуется перенос файлов, то существует костыль с ChangeWindowMessageFilterEx. См. How to enable drag and drop between normal & UAC elevated privileges applications.
Комментариев нет:
Отправить комментарий