2011-11-23 11 views
8

Tengo una aplicación .net en la que necesito elevarme con derechos de administrador debido al acceso a algunas API de bajo nivel. Lo estoy haciendo usando requestedExecutionLevel en el conjunto de manifiesto de la aplicación para requireAdministrator.La elevación del UAC no permite arrastrar y soltar

La aplicación también necesita recibir solicitudes de arrastrar y soltar desde el explorador de Windows. He intentado configurar uiAccess como verdadero en manifiestos y cumplir con otros requisitos, como la firma autenticada de la aplicación, la instalación en una ubicación restringida (archivos de programa), etc. La aplicación se ejecuta correctamente sin ningún error (en vista, win 7) donde el usuario obtiene el UAC solicita elevación.

Pero todavía no puedo aceptar las solicitudes de arrastrar y soltar.

+0

posible duplicado de [gota # Arrastre C no funciona en Windows 7] (http : //stackoverflow.com/questions/2833709/c-sharp-drag-drop-does-not-work-on-windows-7) –

Respuesta

7

Los procesos con privilegios inferiores no pueden arrastrar y soltar a los de mayor privilegio en Vista y posterior.

La conclusión es que arrastrar y soltar desde el Explorador de Windows no funcionará si su aplicación es elevada.

http://blogs.msdn.com/b/patricka/archive/2010/01/28/q-why-doesn-t-drag-and-drop-work-when-my-application-is-running-elevated-a-mandatory-integrity-control-and-uipi.aspx

+0

La respuesta de Helge es mejor, aunque lo dejo como referencia para el MS oficial posición :-) –

2

que describe cómo hacer que arrastrar y soltar el trabajo con el UAC y UIPI aquí:

How to Enable Drag and Drop for an Elevated MFC Application on Vista/Windows 7

+0

+1, genial para aprender que hay una forma de evitar el problema. ¿Alguna sugerencia para el OP sobre el uso de 'ChangeWindowMessageFilter' desde C#? Solo 'DllImport'? –

+0

@EricJ: Usaría el DllImport sencillo. –

+0

@HelgeKlein: Gracias por la información. Pero no funcionó llamar a ChangeWindowsMessageFilter o ChangeWindowsMessageFilterEx desde el formulario que acepta la solicitud de D & D. El método se ejecuta con éxito, pero aún así, D & D está desactivado. Parece que Windows ya no usa mensajes para D & D, sino algunos componentes COM ([D & D en Windows] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb776905 (v = vs.85) .aspx)). Por cierto, tengo que ejecutar código en win xp, vista y win 7. – CDS