วิธีเพิ่มรายการเมนูบริบทลงใน Windows Explorer สำหรับโฟลเดอร์ [ปิด]


102

ฉันได้ค้นพบวิธีการเพิ่มรายการเมนูบริบทคลิกขวาลงในไฟล์บน Windows Explorer โดยเพิ่มคีย์ลงในรีจิสทรี คือฉันสามารถคลิกขวาที่ไฟล์ใน Explorer และเรียกใช้แอพที่กำหนดเองกับไฟล์นั้น

ฉันต้องการทำเช่นเดียวกันกับโฟลเดอร์และยังไม่พบวิธีดำเนินการ (ยัง) ฉันเห็นบทความเกี่ยวกับการสร้าง / เขียนตัวจัดการเมนูบริบทที่กำหนดเอง แต่ฉันไม่อยากไปที่นั่น

ฉันพบบทความที่นี่เกี่ยวกับวิธีการเพิ่มรายการเมนูบริบทแบบเรียงซ้อนลงในเดสก์ท็อปและใน "คอมพิวเตอร์" ใน Explorer แต่จะใช้ไม่ได้กับโฟลเดอร์ใด ๆ

ฉันต้องการเพิ่มแอพที่กำหนดเองลงในเมนูบริบทและให้มันทำงานได้ทั้งไฟล์และโฟลเดอร์ มีวิธีดำเนินการโดยไม่ต้องเขียนตัวจัดการเมนูบริบทหรือไม่


ฉันพบวิธีแก้ปัญหาในบทความด้านล่างซึ่งอธิบายถึงวิธีการดำเนินการนี้ผ่านทางรีจิสทรีสำหรับไฟล์และโฟลเดอร์:

บทความสองบทความต่อไปนี้ให้ข้อมูลและตัวเลือกเพิ่มเติม:


1
คำถามนี้เปิดมา 6 ปีแล้ว?! ใครปิดมันเมื่อหกวันที่แล้ว?
Andrew

สิ่งเดียวที่ฉันไม่ชอบเกี่ยวกับ StackOverflow คือคำถามปิดตัวตลกหรือทำเครื่องหมายคำถามเป็นนอกหัวข้อ
Michael

คำตอบ:


218

ในตัวแก้ไขการลงทะเบียน ( regedit.exe) ค้นหา:

  • เมนูบริบทสำหรับคลิกขวาที่โฟลเดอร์ในแผงด้านซ้ายของ Windows Explorer หรือบนพื้นหลังของไดเร็กทอรีในแผงด้านขวา:

    1. HKEY_CLASSES_ROOT\Directory\Background\shell หากคุณเป็นผู้ดูแลระบบ
    2. HKEY_CURRENT_USER\Software\Classes\directory\Background\shell หากคุณเป็นผู้ใช้ปกติ
  • เมนูบริบทสำหรับคลิกขวาที่โฟลเดอร์ในแผงด้านขวาของ Windows Explorer:

    1. HKEY_CLASSES_ROOT\Directory\shell หากคุณเป็นผู้ดูแลระบบ
    2. HKEY_CURRENT_USER\Software\Classes\directory\shell หากคุณเป็นผู้ใช้ปกติ
  • เมนูบริบทสำหรับไฟล์ใด ๆ :

    1. HKEY_CLASSES_ROOT\*\shell หากคุณเป็นผู้ดูแลระบบ
    2. HKEY_CURRENT_USER\Software\Classes\*\shell หากคุณเป็นผู้ใช้ปกติ

ในทุกกรณี:

  1. เพิ่มคีย์ใหม่ภายใต้shellตั้งชื่อตามที่คุณต้องการตั้งชื่อรายการเมนูบริบท
  2. เพิ่มคีย์ใหม่ภายในคีย์นี้ชื่อcommand(ชื่อบังคับ)
  3. แก้ไขdefaultคุณสมบัติcommandเป็น myprogrampath\path\path\executable.exe %1เพื่อส่งเส้นทางไฟล์และชื่อของไฟล์ที่เลือกไปยังโปรแกรมที่คุณกำหนดเอง

การปรับแต่งเพิ่มเติม:

  • เพิ่มไอคอน : เพิ่มค่าสตริงที่ตั้งชื่อiconสำหรับคีย์ที่สร้างในขั้นตอนที่ 1 โดยมีค่าที่ตรงกับเส้นทางทรัพยากรไอคอน คุณยังสามารถระบุอาร์กิวเมนต์จำนวนเต็มเพื่อระบุไอคอนที่จะใช้ ตัวอย่าง:%SystemRoot%\System32\shell32.dll,3
  • แสดงเฉพาะเมื่อคลิก shift : เพิ่มค่าสตริงว่างที่ตั้งชื่อExtendedสำหรับคีย์ที่สร้างขึ้นในขั้นตอนที่ 1
  • กำหนดป้ายรายการเมนูเอง : เปลี่ยนค่าของค่าเริ่มต้นสำหรับคีย์ที่สร้างในขั้นตอนที่ 1
  • เปลี่ยนตำแหน่งรายการเมนู : เพิ่มค่าสตริงที่ตั้งชื่อPositionด้วยหนึ่งใน: Top,Bottom

2
HKEY_CLASSES_ROOT\Directory\Background\shellสามารถส่งผลต่อการคลิกขวาที่พื้นหลังของไดเร็กทอรีเท่านั้น
Amos

23
ควรอยู่"%1"ในกรณีที่เส้นทางมีช่องว่าง
Blrp

1
สิ่งเหล่านี้ควรมีผลเมื่อใด พวกเขาต้องการการรีสตาร์ทหรือไม่?
Michael

4
ทันที. ไม่จำเป็นต้องเปิดหน้าต่าง explorer ใหม่ด้วยซ้ำ: การตั้งค่าใหม่จะโหลดทันทีที่คุณคลิกขวา
jumpjack

15
เกี่ยวกับความคิดเห็นก่อนหน้าฉัน: ปัญหาสามารถแก้ไขได้โดยการเปลี่ยนจาก%1 %V
Michael Herrmann

10

ฉันกลับไปและตอบคำถามนี้ในหัวข้ออื่นด้วยเนื่องจากดูเหมือนจะไม่มีคำถามเกี่ยวกับคำถามนี้มากนัก

ฉันพบวิธีที่ง่ายที่สุดคือการเพิ่มค่าสตริงให้กับคีย์ที่เรียกว่า "AppliesTo" และตั้งค่าเป็น "under: {path}"

ในตัวอย่างของฉันฉันต้องการให้มันดูเฉพาะใน T Drive ดังนั้นค่า String ของฉันคือ "AppliesTo": "under: T:"

ใน C # สามารถทำได้อย่างง่ายดายดังต่อไปนี้:

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 # เป็นความช่วยเหลือเล็กน้อยสำหรับทุกคนที่ต้องการดำเนินการอย่างรวดเร็วจากแอป
Ayo I

2
น่าเสียดายที่ค่า "AppliesTo" ดูเหมือนจะไม่มีผลกับรายการ "Directory \ Background" มีใครรู้บ้างว่าการ จำกัด ที่คล้ายกันนี้สามารถทำได้สำหรับการคลิกขวาที่พื้นหลังของโฟลเดอร์ได้อย่างไร?
cl0rkster

6

พบวิธีแก้ปัญหาที่สะอาดกว่าง่ายกว่าและเร็วกว่า: สร้างไฟล์ข้อความเติมเนื้อหาเหล่านี้อัปเดตตามความต้องการของคุณบันทึกด้วยคำต่อท้าย. reg และเปิดใช้งาน (ไม่จำเป็นต้องมีสิทธิ์ผู้ดูแลระบบเนื่องจากเข้าถึงส่วนผู้ใช้ของรีจิสทรี ):

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"

ด้วยวิธีนี้คุณสามารถสำรองข้อมูลการกำหนดค่าของคุณได้เพียงบันทึกไฟล์. reg ไว้ในที่ปลอดภัย หากคุณแก้ไขรีจิสทรีด้วยตนเองหลังจากเปิดไฟล์แล้วให้คลิกขวาและเลือก "ส่งออก"

ระวังแบ็คสเปซสองครั้งในพา ธ : \\


1

ทางออกที่ดีอย่างเดียวที่ฉันพบว่าใช้งานได้จริงคือ: /superuser/1097054/shell-context-menu-registry-extension-doesnt-work-when-default-program-is-other

เพิ่มคีย์ใน HKEY_CLASSES_ROOT \ SystemFileAssociation \ your.extension \ shell \ command แก้ไขคีย์สุดท้ายด้วยคำสั่งที่คุณต้องการ

สำหรับจุดประสงค์ของฉันมันคือ:

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

ถ้าฉันส่งออกฉันจะได้รับ. 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

เปิดพรอมต์คำสั่ง [รันในฐานะผู้ดูแลระบบ] และดำเนินการคำสั่งนี้

reg add "HKEY_CLASSES_ROOT\Directory\shell\Refi2\command" /d "powershell.exe -noexit -command Set-Location -literalPath '%V'"
  • -d: ค่าที่จะดำเนินการ [ชื่อแอป exe]
  • -v: สร้างคีย์ย่อยใหม่ภายในคีย์คำสั่ง
  • -f: เพื่อบังคับใช้แทนคีย์หากมีอยู่แล้ว
  • powershell.exe -noexit -command Set-Location -literalPath '% V'แทนสิ่งนี้คุณสามารถระบุเส้นทางของexe ของคุณได้

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับคุณสมบัติเพิ่มเติมที่เรียกใช้: -

reg add /?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.