Cách thêm mục menu ngữ cảnh vào Windows Explorer cho các thư mục [đã đóng]


100

Tôi đã tìm ra cách thêm các mục menu ngữ cảnh nhấp chuột phải vào tệp trên Windows Explorer, bằng cách thêm khóa vào sổ đăng ký. Tức là tôi có thể nhấp chuột phải vào tệp trong Explorer và chạy ứng dụng tùy chỉnh trên tệp đó.

Tôi muốn làm điều tương tự cho một thư mục và chưa tìm ra cách nào để làm điều đó (chưa). Tôi thấy các bài viết về tạo / viết trình xử lý menu ngữ cảnh tùy chỉnh, nhưng tôi không muốn đến đó.

Tôi đã tìm thấy một bài viết ở đây về cách thêm các mục menu ngữ cảnh xếp tầng vào Màn hình và "Máy tính" trong Explorer, nhưng điều này không hoạt động đối với bất kỳ thư mục nào.

Tôi muốn có thể thêm ứng dụng tùy chỉnh của mình vào menu ngữ cảnh và để nó hoạt động trên cả tệp và thư mục. Có cách nào để làm điều này mà không cần viết trình xử lý menu ngữ cảnh không?


Tôi đã tìm thấy giải pháp trong bài viết dưới đây, mô tả cách thực hiện việc này thông qua sổ đăng ký cho các tệp cũng như cho các thư mục:

Hai bài viết sau cung cấp thêm thông tin và các tùy chọn:


1
Câu hỏi này đã được mở trong 6 năm?! Ai đã đóng nó sáu ngày trước?
Andrew

Điều duy nhất tôi không thích về StackOverflow là những chú hề đóng câu hỏi hoặc đánh dấu câu hỏi là lạc đề.
Michael

Câu trả lời:


209

Trong trình chỉnh sửa đăng ký ( regedit.exe), hãy tìm:

  • Trình đơn ngữ cảnh để nhấp chuột phải vào các thư mục trong bảng điều khiển bên trái của Windows Explorer hoặc trên nền của một thư mục trong bảng điều khiển bên phải:

    1. HKEY_CLASSES_ROOT\Directory\Background\shell nếu bạn là quản trị viên
    2. HKEY_CURRENT_USER\Software\Classes\directory\Background\shell nếu bạn là người dùng bình thường
  • Trình đơn ngữ cảnh để nhấp chuột phải vào các thư mục trong bảng điều khiển bên phải của Windows Explorer:

    1. HKEY_CLASSES_ROOT\Directory\shell nếu bạn là quản trị viên
    2. HKEY_CURRENT_USER\Software\Classes\directory\shell nếu bạn là người dùng bình thường
  • Menu ngữ cảnh cho bất kỳ tệp nào:

    1. HKEY_CLASSES_ROOT\*\shell nếu bạn là quản trị viên
    2. HKEY_CURRENT_USER\Software\Classes\*\shell nếu bạn là người dùng bình thường

Trong tất cả trường hợp:

  1. thêm một khóa mới bên dưới shell, đặt tên nó như bạn muốn đặt tên cho mục menu ngữ cảnh
  2. thêm một khóa mới bên trong khóa này, có tên command(tên bắt buộc)
  3. chỉnh sửa các defaulttài sản tại commandđể myprogrampath\path\path\executable.exe %1vượt qua đường dẫn tập tin và tên của file được lựa chọn để chương trình tùy chỉnh của bạn

Nhiều tùy chỉnh hơn:

  • Thêm biểu tượng : thêm giá trị chuỗi có tên iconcho khóa được tạo ở bước 1 với giá trị khớp với đường dẫn tài nguyên biểu tượng. Bạn cũng có thể cung cấp một đối số số nguyên để chỉ định biểu tượng nào sẽ sử dụng. Thí dụ:%SystemRoot%\System32\shell32.dll,3
  • Chỉ hiển thị khi bấm shift : thêm giá trị chuỗi trống được đặt tên Extendedcho khóa được tạo ở bước 1
  • Tùy chỉnh nhãn mục nhập menu : thay đổi giá trị của giá trị mặc định cho khóa được tạo ở bước 1
  • Thay đổi vị trí mục menu : thêm một giá trị chuỗi tên Positionvới một trong số: Top,Bottom

2
HKEY_CLASSES_ROOT\Directory\Background\shellchỉ có thể ảnh hưởng đến nhấp chuột phải trên nền của một thư mục
Amos

21
Nên phòng "%1"trường hợp đường dẫn có khoảng trắng.
Blrp

3
ngay. Thậm chí không cần phải mở một cửa sổ khám phá mới: các cài đặt mới được tải ngay khi bạn nhấp chuột phải.
jumpjack

1
Có vẻ như các biến môi trường không hoạt động Command, phải không?
Jack Lu

14
Về nhận xét trước đây của tôi: Sự cố có thể được khắc phục bằng cách thay thế %1bằng %V.
Michael Herrmann

10

Tôi đã quay lại và cũng trả lời điều này trong một chủ đề khác vì dường như không có nhiều về câu hỏi này cụ thể.

Tôi thấy cách đơn giản nhất là thêm Giá trị chuỗi vào khóa có tên "AppliesTo" và đặt giá trị của nó thành "under: {path}"

Trong ví dụ của tôi, tôi muốn nó chỉ hiển thị trong T Drive, vì vậy giá trị Chuỗi của tôi là "AppliesTo": "under: T:".

Trong C #, điều này có thể dễ dàng thực hiện với những điều sau:

RegistryKey _key = Registry.ClassesRoot.OpenSubKey("Folder\\Shell", true);
RegistryKey newkey = _key.CreateSubKey("My Menu Item");
newkey.SetValue("AppliesTo", "under:T:");

RegistryKey subNewkey = newkey.CreateSubKey("Command");
subNewkey.SetValue("", "C:\\yourApplication.exe");
subNewkey.Close();

newkey.Close();
_key.Close();

2
Cảm ơn bạn đã cung cấp mã mẫu để thực hiện việc này qua C #. Đó là một trợ giúp nhỏ cho những ai muốn thực hiện việc này nhanh chóng từ một ứng dụng.
Ayo I

2
Thật không may, giá trị "AppliesTo" dường như không có bất kỳ ảnh hưởng nào đến mục nhập "Thư mục \ Nền". Có ai biết giới hạn tương tự có thể được thực hiện như thế nào đối với việc nhấp chuột phải vào nền của thư mục không?
cl0rkster

6

Đã tìm thấy một giải pháp gọn gàng hơn, dễ dàng hơn và nhanh hơn: tạo một tệp văn bản, điền vào nó những nội dung này, cập nhật nó theo nhu cầu của bạn, lưu với hậu tố .reg và khởi chạy nó (nó không cần quản trị viên priviliges vì ​​nó truy cập phần người dùng của sổ đăng ký ):

Windows Registry Editor Version 5.00

; Setup context menu item for click on right panel:
[HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground\command]
@="C:\\yourpath\\executable.exe \"%1\""

; Optional: specify an icon for the item:   
; HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground]
;"icon"="C:\\yourpath\\appicon.ico"

; Optional: specify a position in the menu
; HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground]
;"position"="Bottom"

; -------------------------------------------------------------------------------------

; Setup context menu item for click on folders tree item:
[HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel\command]
@="C:\\yourpath\\executable.exe \"%1\""

; Optional: specify an icon for the item:   
; [HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel]
;"icon"="C:\\yourpath\\appicon.ico"

; Optional: specify a position in the menu
; [HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel]
;"position"="Top"

Bằng cách này, bạn cũng có thể có một bản sao lưu cấu hình của mình: chỉ cần lưu tệp .reg ở một nơi an toàn. Nếu bạn chỉnh sửa sổ đăng ký theo cách thủ công sau khi khởi chạy tệp, hãy nhấp chuột phải và chọn "xuất".

Cẩn thận với các khoảng trống kép trong đường dẫn: \\


1

Giải pháp tốt duy nhất mà tôi thấy thực sự hiệu quả là: /superuser/1097054/shell-context-menu-registry-extension-doesnt-work-when-default-program-is-other

Thêm khóa trong HKEY_CLASSES_ROOT \ SystemFileAssociations \ your.extension \ shell \ command Sửa đổi khóa cuối cùng bằng lệnh bạn muốn.

Đối với mục đích của tôi, đó là:

"C:\Program Files (x86)\GPSBabel\gpsbabel.exe" -r -i gpx -f "%1" -x simplify,count=1000 -o gpx -F "%1.gpx"

Nếu tôi xuất nó, tôi nhận được .reg:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\.gpx\shell\Simplify gpx\command]
@="\"C:\\Program Files (x86)\\GPSBabel\\gpsbabel.exe\" -r -i gpx -f \"%1\" -x simplify,count=1000 -o gpx -F \"%1.gpx\""

1

Mở dấu nhắc lệnh [chạy với tư cách quản trị viên] và thực hiện lệnh này

reg add "HKEY_CLASSES_ROOT\Directory\shell\Refi2\command" /d "powershell.exe -noexit -command Set-Location -literalPath '%V'"
  • -d: giá trị để thực thi [tên ứng dụng exe].
  • -v: tạo một khóa con mới bên trong khóa lệnh.
  • -f: để ghi đè mạnh mẽ khóa nếu đã tồn tại.
  • powershell.exe -noexit -command Set-Location -literalPath '% V' thay vì điều này, bạn có thể chỉ định đường dẫn exe của mình .

Để biết thêm chi tiết về các tính năng khác chạy: -

reg add /?
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.