Tôi đang đề cập cụ thể đến các cửa sổ 7.Windows 7 tập tin mở rộng liên kết
tôi có mã liên kết một phần mở rộng nhất định với ứng dụng của tôi theo đề nghị của webJose ở trang sau: What registry keys are responsible for file extension association? (Tuy nhiên tôi viết một cách chính xác đến HKEY_CURRENT_USER \ Software \ Classes thay vì HKEY_CLASSES_ROOT như gợi ý)
Các tác phẩm trên ban đầu, hoặc nếu không có chương trình nào khác liên quan đến phần mở rộng. Tuy nhiên sau khi sử dụng Windows 7 được tích hợp sẵn "Chọn chương trình mặc định ..." (được tìm thấy trong trình đơn ngữ cảnh nhấp chuột phải trong "Mở bằng"), nó sẽ liên kết lại phần mở rộng với bất kỳ chương trình mới nào bạn chọn.
Điều gì xảy ra tại thời điểm này là "HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \\ UserChoice" được thay đổi bởi hệ thống và do đó chương trình mới được chọn sẽ tiếp quản.
Chạy mã trên, để lấy lại quyền kiểm soát tiện ích sẽ không hoạt động. Cách duy nhất để lấy lại quyền kiểm soát, bằng một trong hai cách:
- Chỉnh sửa UserChoice -> Giá trị Progid, không được phép (không lập trình cũng không sử dụng regedit.exe - truy cập bị từ chối).
- Hoặc xóa các giá trị lựa chọn của người và đảm bảo ứng dụng của bạn là người đầu tiên trong giá trị MRUList dưới \ OpenWithList (điều này có thể đạt được bằng regedit.exe nhưng không lập trình)
Câu hỏi của tôi là: Có cách nào để đạt được điều này theo chương trình? Giá trị đăng ký nào có thể được thay đổi để lấy lại quyền kiểm soát tiện ích, sau khi được kết hợp với một chương trình khác?
Tôi biết có thể rõ ràng rằng nếu người dùng thông qua trình khám phá đặt ứng dụng được liên kết thành tiện ích mở rộng, nó sẽ được thực hiện lại theo cách tương tự để liên kết lại tiện ích với ứng dụng khác.
Tuy nhiên, vấn đề là tôi có một nút trong ứng dụng sử dụng mã được đề cập ở trên để kiểm tra liên kết tiện ích mở rộng với ứng dụng của tôi. Thật không may với tình hình trên, ứng dụng của tôi hiển thị một thông báo xác nhận rằng phần mở rộng đã được liên kết thành công khi nó không được! Vì vậy, có một cách xung quanh này?
Bạn không thể xóa khóa theo bất kỳ cách nào theo chương trình, ngay cả khi người quản trị viết. Đó là lý do cho câu hỏi trên của tôi, làm thế nào tôi có thể xóa nó? – Tamer
Đó là một tính đặc thù của hệ thống của bạn, không phải là một tiêu chuẩn Windows. Một số phần mềm bạn đã cài đặt đã thay đổi mã khóa trên khóa để ngăn bạn thay đổi nó ... có thể là bất cứ điều gì đã tự đăng ký trong UserChoice. Tuy nhiên, bạn có thể tự cấp quyền truy cập cho mình, sau đó xóa nó. –
Bạn có thể xác nhận điều này không? Bây giờ tôi đã thử điều này trên một số máy chạy ứng dụng với tư cách quản trị viên. Truy cập vào khóa cụ thể "UserChoice" bị từ chối theo lập trình (không phải viết và xóa). Bạn đang nói rằng u có thể lập trình chỉnh sửa các giá trị của khóa này trên máy ur? Ai đó có thể vui lòng xác nhận điều này? – Tamer