Объяснение этой проблемы с помощью UIPI - это очень длинный отрезок. Это не имеет никакого отношения к тому, вошел ли пользователь в систему как администратор, это не влияет на UAC, и ваша программа все равно будет работать с той же учетной записью. Единственный способ, которым UIPI может включить D + D, - это когда ваша программа повышена, а Excel - нет.
Чтобы подняться, нужна работа, а не случайно. Вы должны будете включить манифест, чтобы пользователь получил приглашение UAC, вы бы знали об этом. Или пользователь должен будет изменить ярлык на рабочем столе и установить флажок «Запускать программу от имени администратора», он знает об этом. В то время как UIPI можно обойти для сообщений Windows (ChangeWindowMessageFilter), он не может для перетаскивания, поэтому, если происходит повышение прав, то вы застряли. Конечный тест - просто попросить пользователя полностью опустить ползунок UAC.
Гораздо более вероятный сценарий состоит в том, что ваш обработчик событий DragEnter просто недоволен данными, которые он видит, и поэтому не назначает свойство e.Effect. Если вы не можете получить отладчик на месте, напишите небольшую тестовую программу, которая регистрирует значения e.Data.GetFormats () и все остальное, что вы используете, чтобы проверить, приемлемо ли удаление. И не забывайте очевидное: пользователь просто как-то шарит в перетаскивании.