C# Перетаскивают отбрасывание, не работает над окнами 7

У меня был проект долгое время с помощью C# winforms. Я реализовал функцию перетаскивать-отбрасывания, прежде чем окна 7 были выпущены. Обработанный как очарование. Однако при использовании окон 7 это не работает. Событие даже не становится инициированным.

AllowDrop имеет значение true. При подписке на DragEnter это не становится названным в окнах 7 (не уверенный в перспективе). Но на XP это работает полностью. Программа запущена с administritave полномочиями.

Есть ли какое-либо различие в понижении перетаскивания окон 7 по сравнению с xp? Не знайте, релевантно ли это, но я использую x64

45
задан Oskar Kjellin 7 May 2011 в 16:36
поделиться

2 ответа

Исходный и целевой процессы должны иметь совместимые уровни безопасности \ привилегии. Например, если вашим источником является Explorer и он работает с привилегиями уровня пользователя, но ваше целевое приложение работает с правами администратора (с повышенным), вы не сможете перетаскивать и опускать, поскольку это рассматривается как проблема безопасности, поскольку цель работает с более высоким уровнем привилегий.

77
ответ дан 26 November 2019 в 21:08
поделиться

Это называется UIPI, изоляция привилегий пользовательского интерфейса. Предназначен для предотвращения эксплойтов ввода ввода из программ, работающих с ограниченными привилегиями. Его можно отключить, вам нужно сделать следующее:

  • Измените манифест, установите для атрибута uiAccess для элемента значение true.
  • Храните EXE своей программы в подкаталоге c: \ windows или c: \ program files
  • Подпишите EXE-файл сертификатом от действующего центра подписи кода

На самом деле никогда не пробовал, ymmv.

17
ответ дан 26 November 2019 в 21:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: