
ในบางครั้ง ผู้ใช้จะรายงานปัญหาเกี่ยวกับเมนูเริ่มหรือแถบงานบนโฮสต์ RDS ที่ใช้ Windows Server 2022 หรือ 2019 เมื่อผู้ใช้คลิกปุ่มเริ่มในเซสชันเทอร์มินัล เมนูไม่เปิดขึ้นมา หรือเซสชัน RDP หยุดทำงานและไม่ตอบสนอง
อินเทอร์เฟซเมนู Start และการโต้ตอบของผู้ใช้ได้รับการจัดการโดยสองกระบวนการ: Explorer.exe และ StartMenuExperienceHost.exe การรีสตาร์ทจากตัวจัดการงานอาจแก้ไขปัญหาที่เกิดขึ้นเพียงครั้งเดียวได้อย่างรวดเร็ว

บ่อยครั้งที่ปัญหาของปุ่มเมนูเริ่มไม่ทำงานบนโฮสต์ในฟาร์ม RDS เกิดขึ้นอย่างสม่ำเสมอ ซึ่งมักจะมาพร้อมกับข้อผิดพลาด DCOM Server หลายรายการพร้อมกับ Event ID 10001 ใน Event Viewer-> บันทึกของระบบ ซึ่งชี้ไปที่แอป Microsoft Store

วิธีแก้ไขปัญหาหนึ่งที่เป็นไปได้สำหรับปัญหาเมนู Start ที่ไม่ทำงานในเซสชันผู้ใช้คือการลงทะเบียนแพ็คเกจแอป Microsoft Store ที่มีปัญหาอีกครั้ง เนื่องจากปุ่ม Start ไม่ทำงาน ให้เปิดคอนโซล PowerShell โดยใช้แป้นพิมพ์ลัด Win+X รันคำสั่ง:
เพิ่ม-AppxPackage-ลงทะเบียน "C:\Windows\SystemApps\ShellExperienceHost\_cw5n1h2txyewy\AppxManifest.xml"-DisableDevelopmentMode
หรือลงทะเบียนแอป Microsoft Store ทั้งหมดอีกครั้งพร้อมกัน:
รับ AppXPackage | ระบุ {Add-AppxPackage-DisableDevelopmentMode-Register "$($\_.InstallLocation)\AppXManifest.xml"}

หากวิธีนี้ไม่สามารถแก้ไขปัญหาได้ หรือแก้ไขได้เพียงชั่วคราวเท่านั้น ให้ตรวจสอบเนื้อหาของคีย์รีจิสทรีต่อไปนี้:
-
HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\AppIso\FirewallRules -
HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
ในกรณีของฉัน ฉันพบว่ากฎไฟร์วอลล์ Windows Defender นับพันถูกสร้างขึ้นสำหรับแอป Microsoft Store (APPX/MSIX) ในแต่ละครั้งที่ผู้ใช้เข้าสู่ระบบและออกจากระบบ และกฎเหล่านี้ไม่ได้ถูกล้างโดยอัตโนมัติ

ทุกครั้งที่ผู้ใช้เปิดแอป Microsoft Store กฎไฟร์วอลล์ Windows Defender ใหม่จะถูกเพิ่มโดยอัตโนมัติ แต่กฎเก่าจะไม่ถูกลบ กฎไฟร์วอลล์จำนวนมากอาจทำให้กระบวนการ StartMenuExperienceHost หยุดทำงาน กระบวนการนี้มีหน้าที่รับผิดชอบในการแสดงเมนู Start ในเซสชันผู้ใช้ หากต้องการคืนค่าฟังก์ชันการทำงานของเมนู Start บนโฮสต์ Windows Server ให้ล้างกฎไฟร์วอลล์ Windows Defender เหล่านี้
กฎที่ซ้ำกันจำนวนมากในไฟร์วอลล์ Windows สามารถลดประสิทธิภาพของเซสชัน RDS และ RemoteApp บน Windows Server ได้อย่างมาก
ขั้นแรก ให้สำรองคีย์รีจิสทรีที่มีกฎไฟร์วอลล์ สิ่งนี้จะทำให้เราสามารถย้อนกลับได้ในกรณีที่เกิดปัญหา
ส่งออก reg "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy"C:\Backup\_Firewall\_Policy\_rules.reg

รีจิสทรีคีย์ AppIso เนื่องจาก
ไม่สามารถใช้ cmdlet ของ PowerShell เพื่อจัดการกฎไฟร์วอลล์ในคีย์รีจิสทรีได้เนื่องจากคำสั่ง Get-NetFirewallRule ไม่เห็นกฎเหล่านี้ ดังนั้นคุณจะต้องลบออกจากรีจิสทรีโดยตรง
หากต้องการล้างกฎไฟร์วอลล์ของแอป MS Store ในรีจิสทรี ให้รันคำสั่งเหล่านี้:
reg ลบ HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Configurable\System/va/f
reg ลบ HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\AppIso\FirewallRules/va/f
การดำเนินการนี้จะล้างกฎไฟร์วอลล์ที่กำหนดเอง

HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules อาจมีกฎไฟร์วอลล์ซ้ำกันจำนวนมากที่เกี่ยวข้องกับแอป Microsoft Store อย่าลบรายการทั้งหมดออกจากคีย์รีจิสทรีนี้ เนื่องจากการลบกฎไฟร์วอลล์ Windows ทั้งหมด รวมถึงกฎเริ่มต้นด้วย มิฉะนั้น คุณอาจสูญเสียการเข้าถึงโฮสต์ Windows จากระยะไกล รวมถึงการเข้าถึงเดสก์ท็อประยะไกลด้วย
นอกจากนี้ ให้ตรวจสอบจำนวนกฎภายใต้คีย์รีจิสทรี อาจมีกฎไฟร์วอลล์ซ้ำกันจำนวนมากที่เกี่ยวข้องกับแอป Microsoft Store อย่าลบรายการทั้งหมดออกจากคีย์รีจิสทรีนี้ เนื่องจากการลบกฎไฟร์วอลล์ Windows ทั้งหมด รวมถึงกฎเริ่มต้นด้วย มิฉะนั้น คุณอาจสูญเสียการเข้าถึงโฮสต์ Windows จากระยะไกล รวมถึงการเข้าถึงเดสก์ท็อประยะไกลด้วย
ดังนั้น ก่อนที่จะล้างกฎเหล่านี้ ให้สร้าง GPO ด้วยกฎ Windows Firewall ที่จำเป็นและนำไปใช้กับโฮสต์เพื่อหลีกเลี่ยงการสูญเสียการเข้าถึง
ใช้คำสั่งต่อไปนี้เพื่อคืนค่าการตั้งค่าและกฎ Windows Firewall เริ่มต้น:
(New-Object-ComObject HNetCfg.FwPolicy2).RestoreLocalFirewallDefaults()
หากต้องการให้ Windows ล้างกฎไฟร์วอลล์ที่สร้างโดยแอป Microsoft Store ในแต่ละเซสชันผู้ใช้โดยอัตโนมัติ ให้สร้างพารามิเตอร์รีจิสทรี DeleteUserAppContainersOnLogoff บนเซิร์ฟเวอร์ RDS และตั้งค่าเป็น 1 หากต้องการสร้างรายการรีจิสทรีโดยใช้ PowerShell ให้เรียกใช้:
ใหม่-ItemProperty-Path "HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy"-ประเภท DWord-Name DeleteUserAppContainersOnLogoff-Value 1
ตอนนี้ เมื่อเซสชันของผู้ใช้สิ้นสุดลง กฎไฟร์วอลล์ของแอปที่สร้างขึ้นสำหรับผู้ใช้นั้นจะถูกล้างโดยอัตโนมัติ
สิ่งที่เหลืออยู่คือการลงทะเบียนแพ็คเกจ APPX อีกครั้งบนเซิร์ฟเวอร์:
รับ-AppXPackage-ผู้ใช้ทั้งหมด | ระบุ {Add-AppxPackage-DisableDevelopmentMode-Register “$($\_.InstallLocation)\AppXManifest.xml”}
*️⃣ ลิงค์ที่มา:
แอป Microsoft Store (APPX/MSIX) ลดประสิทธิภาพของเซสชัน RDS และ RemoteApp ลงอย่างมาก สำรองข้อมูลคีย์รีจิสทรี , Get-NetFirewallRule สร้าง GPO ด้วยกฎไฟร์วอลล์ Windows ที่จำเป็น สร้างรายการรีจิสทรีโดยใช้ PowerShell