ใช่คุณสามารถสคริปต์มันด้วยการจัดการรีจิสทรีโดยตรง
คำตอบสั้น ๆ
คัดลอกแต่ละต่อไปนี้ลง.reg
ไฟล์ (เช่นfirefox.reg
, chrome.reg
, ie.reg
) และเรียกพวกเขาเมื่อคุณต้องการสวิทช์ (หรือสคริปต์ด้วยreg.exe
)
สำหรับ Firefox:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"
สำหรับ Chrome:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"
สำหรับ IE9:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"
คำตอบยาว ๆ
Windows จัดเก็บโปรโตคอลมาตรฐานต่อผู้ใช้การลงทะเบียนเริ่มต้นภายใต้UrlAssociations
คีย์อยู่ที่
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations
เช่นเดียวกับการเชื่อมโยงไฟล์อาจมี "โปรแกรมเริ่มต้น" สำหรับลิงก์ นี่คือการจัดเรียงของคำศัพท์ศัพท์แสงที่อ้างอิงUserChoice
คีย์นอกจากนี้ยังมีความสัมพันธ์ของแฟ้มเช่นการลงทะเบียนมาตรฐานเปลือกภายใต้http
ProgId ซึ่งสามารถนอกจากนี้ยังจะมีการเปลี่ยนแปลง แต่การกำหนดค่าที่ใกล้เคียงสำหรับเบราว์เซอร์ผ่านทางโปรแกรมเริ่มต้น (ดูด้านล่างสำหรับการแสดงความคิดเห็นเพิ่มเติมเกี่ยวกับเรื่องนี้ )
สิ่งที่ฉันกำลังพูดถึงนี่คือสิ่งที่คุณกำลังเปลี่ยนแปลงเมื่อคุณไปที่ส่วนโปรแกรมเริ่มต้นของแผงควบคุมเพื่อตั้งค่าเบราว์เซอร์:
หากต้องการกำหนดค่านี้โดยตรงในรีจิสทรีก่อนอื่นให้ตรวจสอบว่ามีอยู่แล้ว ในภาพหน้าจอนี้ฉันได้ไปที่คีย์regedit.exe
นั้นและ Chrome เป็นเบราว์เซอร์เริ่มต้นของฉันซึ่งกำหนดโดยChromeHTML
ค่า ProgId
การเปลี่ยนแปลงขั้นต่ำที่คุณต้องทำเพื่อสลับเบราว์เซอร์ที่เปิดเมื่อคุณคลิกลิงก์คือการเปลี่ยนProgId
ค่าภายใต้UserChoice
คีย์ย่อยของแต่ละโปรโตคอลที่คุณต้องการเปลี่ยน (อาจจะเป็นhttp
และhttps
จะเหมือนเดิม แต่ถ้าด้วยเหตุผลบางอย่างที่คุณต้องการทำ จากที่เปิดในเบราว์เซอร์แยกต่างหากคุณทำได้)
ตอนนี้เป็นเพียงเรื่องของการพิจารณาว่าจะใช้สำหรับ Firefox, IE และเบราว์เซอร์อื่นใดที่คุณอาจต้องการเปลี่ยนเป็น หากคุณต้องการตรวจสอบโปรแกรมนี้คุณสามารถทำได้โดยขุดลงไปในCapabilities
คีย์ของการลงทะเบียนเบราว์เซอร์ที่นี่สำหรับ Firefox:
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet
เป็นที่ที่เบราว์เซอร์ทั้งหมดมีการระบุไว้และแต่ละอันควรมีโครงสร้างด้านบน
คุณสามารถเห็นได้จากการตรวจสอบว่าถ้าฉันต้องการเปลี่ยนเป็น Firefox ฉันจะใช้FirefoxURL
ค่า ProgId สำรองใน UrlAssociations
(อย่างไรก็ตามหากคุณไม่ต้องการที่จะขุดมันแบบนี้ก็มีสูตรโกงอย่างรวดเร็ว: เพียงแค่ตั้งค่าเบราว์เซอร์ที่คุณต้องการเป็นค่าเริ่มต้นและรีเฟรช regedit เพื่อดูว่าเบราว์เซอร์ได้ตั้งค่าสำหรับUserChoice
!)
สิ่งที่เราต้องทำคือเปลี่ยนค่าคีย์เป็นFirefoxURL
และตอนนี้ลิงก์เปิดใน Firefox หลังจากทำเช่นนั้นคุณสามารถคลิกที่ลิงค์หรือตรวจสอบอีกครั้งในแผงควบคุมที่ลงทะเบียนเริ่มต้นที่ถูกต้อง:
ตอนนี้หากคุณให้ความสนใจอย่างใกล้ชิดคุณอาจสังเกตเห็นข้อบกพร่องสองสามข้อที่มีทั้งหมดนี้:
IE ไม่มีURLAssociations
คีย์ย่อยภายใต้การลงทะเบียนเบราว์เซอร์StartMenuInternet
ดังนั้น ProgId จึงมาจากไหน คำตอบ: ฉันไม่รู้อย่างน้อยก็ไม่มีการวิจัยเพิ่มเติม อาจเป็นรหัสหรือพบในคีย์อื่นที่ฉันยังไม่พบ
ของ Firefox ProgId ภายใต้มันURLAssociations
มีFirefoxURL
แต่เมื่อคุณคลิกเพื่อลงทะเบียนในตัวเลือกในเบราว์เซอร์ของตัวเองจะใช้FirefoxHTML
เป็น ProgId แทน! ทำไม? อีกครั้งฉันไม่รู้ พวกเขาทั้งสองทำงานเพราะทั้งคู่มีอยู่และชี้ไปที่ Firefox อาจจะตั้งใจ แต่ก็อาจเป็นเพียงข้อผิดพลาดที่ไม่มีผลกระทบ
จะเกิดอะไรขึ้นเมื่อไม่มีUserChoice
โปรแกรมเริ่มต้น คำตอบ: มีการใช้การเชื่อมโยงไฟล์ "ปกติ" สำหรับโปรโตคอล (เช่นhttp
) นี้จะพบในสถานที่ ProgId มาตรฐานเช่นเดียวกับความสัมพันธ์ของแฟ้ม ( HKCU\Software\Classes
, HKLM\Software\Classes
และมุมมองที่HKCR
) อย่างน้อย Chrome ก็วางข้อมูลไว้ที่นั่น แต่ Firefox ก็ไม่ได้ดูเหมือนว่าอย่างน้อยในการทดสอบของฉัน
ฉันขอแนะนำว่าถ้าคุณต้องการให้สิ่งนี้ถูกเพิ่มเข้าไปใน Default Programs Editor คุณควรแนะนำและ upvote บนหน้าคำติชม UserVoiceของแอปพลิเคชันนั้น ฉันมีสิทธิ์ที่ดีที่ผู้สร้างแอปพลิเคชันให้ความสำคัญกับความคิดเห็นนั้นเมื่อตัดสินใจว่าจะใช้เวลาในการพัฒนาอย่างไร