I'm debugging my application which has drag-n-drop features in Visual Studio 2010. I have to run the IDE in privileged mode since some of my project required so.
My problem:
I can drag-drop when run the .exe file normally (run from Windows Explorer (WE)) but when debugging in VS2010 I cannot do drag-dropping between my app and WE.
I tried to open WE in privileged mode but still cannot debug either.
Do you have the same problem? If you do, do you have any work-around for it? Please share.
Another workaround is to run the debug binary from Windows Explorer and attach to the process from within Visual Studio via the "Tools" or "Debug" menu. I have verified that drag events are received in the debugger when using this approach.
This is by design, an aspect of UAC called UIPI (User Interface Privilege Isolation). It prevents a non-elevated process from hijacking an elevated one through Windows messages or drag and drop. It protects against shatter attacks. There is a way for the elevated process to explicitly allow messages with ChangeWindowMessageFilter. But not for drag and drop, it isn't message based.
There is no decent api-level workaround for this, it has to be done declaratively. The manifest for the program needs to use uiaccess = true
, be code-signed with a certificate from an approved authority and be installed in c:\windows or c:\program files.
来源:https://stackoverflow.com/questions/4561505/cannot-drag-and-drop-to-debugged-application-run-from-a-privileged-run-visual-st