2011-11-23 25 views
8

Tôi có ứng dụng .net nơi tôi cần nâng cấp với quyền quản trị do truy cập vào một số API thắng cấp thấp. Tôi đang làm nó bằng cách sử dụng requestedExecutionLevel trong manifest ứng dụng thiết lập để requireAdministrator.Độ cao UAC không cho phép kéo và thả

Ứng dụng cũng cần nhận được yêu cầu kéo và thả từ trình khám phá cửa sổ. Tôi đã thử đặt uiAccess thành true trong tệp kê khai và tuân thủ các yêu cầu khác như ký xác thực của ứng dụng, cài đặt ở vị trí bị hạn chế (tệp chương trình) v.v. Ứng dụng đang chạy đúng mà không có bất kỳ lỗi nào (trên vista, win 7), nơi người dùng nhận được UAC nhắc cho độ cao.

Nhưng vẫn không thể chấp nhận yêu cầu kéo và thả.

+0

thể trùng lặp của [C# Kéo thả không làm việc trên cửa sổ 7] (http : //stackoverflow.com/questions/2833709/c-sharp-drag-drop-does-not-work-on-windows-7) –

Trả lời

7

Quy trình có đặc quyền thấp hơn không thể kéo và thả cho các quy trình có đặc quyền cao hơn trên Vista trở lên.

Điểm mấu chốt là kéo và thả từ Windows Explorer sẽ không hoạt động nếu ứng dụng của bạn được nâng lên.

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

Câu trả lời của Helge là tốt hơn, mặc dù tôi để lại điều này làm tài liệu tham khảo cho MS chính thức position :-) –

2

tôi đã mô tả làm thế nào để kéo và thả làm việc với UAC và UIPI đây:

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

+0

+1, tuyệt vời để tìm hiểu có cách giải quyết vấn đề. Bất kỳ con trỏ nào cho OP sử dụng 'ChangeWindowMessageFilter' từ C#? Chỉ cần 'DllImport'? –

+0

@EricJ .: Tôi muốn sử dụng DllImport đơn giản đơn giản. –

+0

@HelgeKlein: Cảm ơn bạn đã thông tin. Nhưng gọi ChangeWindowsMessageFilter hoặc ChangeWindowsMessageFilterEx từ biểu mẫu chấp nhận yêu cầu D & D không hoạt động. Phương thức thực thi thành công nhưng D & D vẫn bị vô hiệu hóa. Dường như các cửa sổ không còn sử dụng tin nhắn cho D & D, nhưng một số thành phần COM ([D & D trong windows] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb776905 (v = vs.85) .aspx)). BTW, tôi cần phải thực thi mã trên win xp, vista và giành chiến thắng 7. – CDS

Các vấn đề liên quan