2009-10-19 29 views
6

Tôi phát triển một chương trình C++ có thể sử dụng flash adobe, mặc dù không cần thiết.
Tôi sử dụng CoCreateInstance để tạo đối tượng flash và nếu nó không thành công, tôi biết flash không được cài đặt nên tôi không sử dụng nó.
Tuy nhiên, trong Vista (và tôi nghĩ Windows 7), khi flash không được cài đặt, sau khi rời ứng dụng, "Program Compatibility Assistant" bật lên thông báo rằng "Chương trình này yêu cầu thành phần Windows bị thiếu" chỉ định flash.ocx.

Có cách nào để ngăn thông báo này xuất hiện không? Tôi không muốn ép buộc bất kỳ người dùng nào cài đặt flash (đặc biệt vì nó là IE ActiveX và người dùng FireFox có thể chưa cài đặt) và ứng dụng của tôi có thể hoạt động tốt mà không cần đèn flash.
Thêm thông báo này thực sự gây phiền nhiễu khi nó xuất hiện sau mỗi lần chạy.
Tôi không có nghĩa là tất nhiên vô hiệu hóa PCA trên máy của người dùng, nhưng lại vô hiệu hóa giao diện cụ thể này trên tất cả các máy.Làm cách nào để ngăn chặn chương trình "Trợ lý tương thích chương trình" trong Vista (và Windows 7) xuất hiện?

Mọi suy nghĩ?
Cảm ơn

[EDIT:]

Tôi đi theo Shay của chì (nhờ), và đã làm một số đào hơn của riêng tôi. Tôi được thêm vào XML sau đây để biểu hiện của ứng dụng:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
    <requestedPrivileges> 
     <requestedExecutionLevel level="asInvoker" uiAccess="false"> 
     </requestedExecutionLevel> 
    </requestedPrivileges> 
    </security> 
</trustInfo> 

(xem thêm: msdn.microsoft.com/en-us/library/bb756929.aspx)
này giải quyết vấn đề trên Vista 64.

Để giải quyết cùng một vấn đề trên Windows 7, tôi được thêm vào sau :

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
    <!--The ID below indicates application support for Windows Vista --> 
    <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
    <!--The ID below indicates application support for Windows 7 --> 
    <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 
    </application> 
</compatibility> 

(Xem thêm: blogs.msdn.com/yvesdolc/archive/2009/09/22/the-new-compatibility-section-in-the-application-manifest.aspx)

Giải Quyết Windows 7.

Nhưng đối với một số lý do, nó vẫn xảy ra trong Vista 32 ...

Tôi cũng đã cố gắng chỉnh sửa manifest của DLL cụ thể gây ra vấn đề, nhưng nó không có hiệu lực. Chỉ bản kê khai của tệp thực thi mới có thể ảnh hưởng đến vấn đề.

Vì vậy, ... Vista 32?

Trả lời

2

Snippet từ here (đàm phán về thiết lập nhưng liên quan đến trường hợp của bạn)

Làm thế nào tôi có thể không tham gia vào Program Compatibility Assistant cho thiết lập của tôi?

Để ngăn chặn các Compatibility Assistant Program từ xuất hiện, bạn phải bao gồm một manifest nhúng mà xác định một mức độ thực hiện yêu cầu thiết lập thực thi của bạn. Nếu bạn quấn thực thi thiết lập trong gói tự khai thác , bạn cũng phải bao gồm một tệp kê khai được nhúng được nhúng trong gói tự giải nén .Khi bạn thực hiện việc này, Windows Vista sẽ xử lý thiết lập của bạn như Windows Vista và sẽ không còn hiển thị hộp thoại PCA khi thiết lập thoát sau khi lỗi hoặc hủy .

+0

Cảm ơn bạn đã trả lời nhanh. Tôi đã đi theo hướng dẫn của bạn, nhưng vấn đề không được giải quyết hoàn toàn. Xem câu hỏi đã chỉnh sửa ở trên. – Asaf

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