ซ่อนหรือลบไอคอนถาด "เอาฮาร์ดแวร์ออกอย่างปลอดภัย"

  • Jul 19, 2023

ก่อนอื่น ฉันอยากจะชี้ให้เห็นว่ามันไร้สาระแค่ไหนที่สามปีหลังจาก MS ทำให้ไม่จำเป็นต้องใช้สิ่งนี้ พวกเขายังคงบังคับให้ไอคอนนี้อยู่ในถาดของผู้ใช้ อย่างไรก็ตาม ฉันใช้เวลาพอสมควรในการเขียนสคริปต์ทั้งแบบแบตช์และ PowerShell เพื่อทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ โดยคิดว่าฉันสามารถโพสต์ไว้ที่นี่ได้ สำหรับผู้ที่ไม่สามารถหาวิธีการใช้งานด้วยตนเองได้ เพียงเพื่อจะพบว่าการเปลี่ยนแปลงการตั้งค่ารีจิสทรีนี้เป็นเพียงการแก้ไขบางส่วนเท่านั้น มันทำให้ไอคอนถูกซ่อนเมื่อบูทเครื่อง ดังนั้นผู้ใช้ส่วนใหญ่จะกำจัดไอคอนนี้ออกไป แต่ถ้า explorer.exe ล่มหรือรีสตาร์ทโดยผู้ใช้ ไอคอนจะกลับมา โดยทั่วไปแล้ว Windows จะบอก FU กับผู้ใช้และตัดสินใจว่าแม้ว่าคุณจะพยายามเปลี่ยนค่านั้นแล้ว แต่มันก็แค่เปลี่ยนกลับ ดังนั้นจำเป็นต้องแก้ไขรายการและ systray.exe จำเป็นต้องเรียกใช้ทุกครั้งที่โหลด EXPLORER เพื่อแก้ไขปัญหานี้อย่างสมบูรณ์ น่าเสียดายที่ AFAICT ไม่มีวิธีการทำเช่นนี้ด้วยสคริปต์หรือการปรับแต่งรีจิสทรีอย่างง่าย แต่ฉันรู้แล้วว่าจะทำอย่างไร

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

ชื่อ (สามารถเป็นอะไรก็ได้ที่คุณต้องการ): ลบอย่างปลอดภัย ลบไอคอนถาดฮาร์ดแวร์
เรียกใช้ในฐานะผู้ใช้เฉพาะเมื่อเข้าสู่ระบบ
ทริกเกอร์: ในเหตุการณ์ (พื้นฐาน — บันทึก: Microsoft-Windows-Shell-Core/Operational; ที่มา: Shell-Core; รหัสเหตุการณ์: 62170; การตั้งค่าขั้นสูงถูกปิดใช้งานทั้งหมดยกเว้นเปิดใช้งานงานเอง)
การดำเนินการ: เริ่มโปรแกรม (ดูด้านล่าง*)
เงื่อนไข: ไม่ถูกตรวจสอบทั้งหมด
การตั้งค่า: อาจไม่สำคัญ แต่ฉันตั้งค่าให้อนุญาตให้ทำงานตามความต้องการ หยุดหากทำงานนานกว่า 3 นาที บังคับให้หยุดหากไม่สิ้นสุดเมื่อมีการร้องขอ และอย่าเริ่มอินสแตนซ์ใหม่

*การดำเนินการ: คู่แรกจะเรียกใช้โดยซ่อนอยู่ ซึ่งต้องใช้คำสั่งพิเศษและจะไม่ทำงานหากปิดใช้งาน wsh หรือ vbs แนะนำให้ลองใช้งานก่อน หากไม่ได้ผล ให้ใช้คู่ที่สอง ซึ่งจะกระพริบหน้าต่างคำสั่งเมื่อรัน แม้ว่าจะเป็นระยะสั้นมากก็ตาม ตรวจสอบให้แน่ใจว่าได้รวมบรรทัดทั้งหมด และแก้ไขค่าการหมดเวลา (การหมดเวลา /t x) ขึ้นหรือลงตามต้องการ แนะนำว่าอย่าลบหรือลดต่ำกว่า 5 เพราะ explorer อาจโหลดไม่ครบและใช้งานไม่ได้ และใน ความจริงอาจต้องใช้เวลามากขึ้นในระบบที่ช้าลง แต่ฉันได้ทดสอบที่ 5 วินาทีอย่างละเอียดและใช้งานได้ ไม่มีที่ติ

ใช้อย่างใดอย่างหนึ่งหรืออย่างอื่น:

โปรแกรม/สคริปต์: mshta
อาร์กิวเมนต์: vbscript: Execute(“CreateObject(“”WScript. เชลล์”) เรียกใช้ “” cmd /c หมดเวลา /t 5 & reg เพิ่ม HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\SysTray /v Services /t reg_dword /d 29 /f & systray””, 0:ปิด ”)

โปรแกรม/สคริปต์: cmd
อาร์กิวเมนต์: /c หมดเวลา /t 5 & reg เพิ่ม HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\SysTray /v Services /t reg_dword /d 29 /f & systray

หากต้องการนำเข้างานแทนที่จะสร้างใหม่ตั้งแต่ต้น ให้คัดลอกและวางสิ่งต่อไปนี้ลงในไฟล์และบันทึกเป็น “Remove Safely Remove Hardware Tray Icon.xml” (หรืออะไรก็ตามที่คุณต้องการตั้งชื่องาน) จากนั้นเปิด Task Scheduler แล้วคลิก “Import Task…” ทางด้านขวา เรียกดูไฟล์ที่คุณเพิ่งสร้างขึ้น แล้วเปิด เมื่อนำเข้าแล้ว ควรเปิดหน้าต่าง "สร้างงาน" ซึ่งคุณจะต้องทำการเปลี่ยนแปลงหนึ่งรายการ บนแท็บทั่วไป คลิกปุ่ม “เปลี่ยนผู้ใช้หรือกลุ่ม” (หรือกด Alt+u) จากนั้นคลิก “ขั้นสูง” (หรือ Alt+a) จากนั้น “ค้นหาทันที” (Alt+n) จากนั้นให้เลื่อนลงมาด้านล่างและค้นหาชื่อผู้ใช้บัญชี Windows ของคุณ เลือกและกด Enter สามครั้งเพื่อปิดทั้งหมดและบันทึก มัน. แค่นั้นแหละ. ฉันสามารถสร้างแบตช์ไฟล์เพื่อทำทั้งหมดนี้โดยอัตโนมัติได้อย่างง่ายดาย เนื่องจากแม้จะมีขั้นตอนเหล่านี้ ฉันแน่ใจว่าบางไฟล์จะล้นหลาม แต่ไม่สามารถโพสต์ไฟล์ในความคิดเห็นได้ หากผู้ดูแลไซต์ต้องการให้ฉันโพสต์ในหน้านี้ โปรดแจ้งให้ฉันทราบ

และนี่คือเนื้อหาที่จะวางลงใน xml:

2022-06-27T00:15:39.1874766

\ลบไอคอนถาดฮาร์ดแวร์ออกอย่างปลอดภัย

~~ซี้ด~~
โทเค็นแบบโต้ตอบ

เท็จ
จริง
พีทีทรีเอ็ม
ละเว้นใหม่

จริง
เท็จ

มชตา
vbscript: Execute(“CreateObject(“”WScript. เชลล์”) เรียกใช้ “” cmd /c หมดเวลา /t 5 & reg เพิ่ม HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\SysTray /v Services /t reg_dword /d 29 /f & systray””, 0:ปิด ”)