Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

วิธีรัน Windows File Explorer ด้วยสิทธิ์ Administrator (Elevated)

File Explorer เสมอเริ่มต้นใน Windows ด้วยสิทธิ์น้อยที่สุด (Least Privileges) แม้คุณจะคลิกที่ไฟล์ Executable C:\Windows\explorer.exe และพยายามเริ่มในโหมด "Run as administrator" การยกระดับสิทธิ์ (Privilege Elevation) จะไม่เกิดขึ้น ในบทความนี้เราจะดูเทคนิคง่ายๆ ในการรัน File Explorer ด้วยสิทธิ์ที่ยกระดับ (Elevated Permissions / As Administrator)

You Don't Have Permission to Access Folder, Click Continue to Permanently Get Access

เมื่อทำงานกับ Windows File Explorer ภายใต้บัญชีที่ถูกเพิ่มเข้ากับกลุ่ม Local Administrators (หรือแม้แต่ภายใต้ Built-in Windows Administrator) คุณมักต้องเปิด System Folders, User Profiles หรือแก้ไข System Files ที่ได้รับการป้องกัน เมื่อพยายามเปิด Directory/File ดังกล่าวใน Windows Explorer ใน Context ปัจจุบัน จะมีคำเตือน UAC แจ้งให้ให้สิทธิ์เข้าถึงและยกระดับสิทธิ์

ลักษณะคือ: ลองเปิด System Folder C:\Windows\System32\Config ใน File Explorer หน้าต่าง User Account Control ปรากฏเตือนว่าไม่มีสิทธิ์เข้าถึงโฟลเดอร์นี้:

You don't currently have permission to access this folder. Click Continue to permanently get access to this folder.

แต่สามารถเข้าถึงได้ผ่าน UAC Privilege Elevation โดยกด Continue

ปัญหาที่รู้จัก: 没问题 แต่ถ้าคุณทำเช่นนั้น บัญชีของคุณจะถูกเพิ่มเข้าไปใน NTFS Permissions ของโฟลเดอร์อย่างชัดเจน แต่สิ่งที่คุณต้องการคือแค่ดูเนื้อหาโฟลเดอร์ ไม่ใช่เปลี่ยน ACL! ถ้ามีหลาย Administrators บนเซิร์ฟเวอร์ แต่ละคนจะเปลี่ยน Directory ACL เมื่อเข้าถึงโฟลเดอร์

หลังจากเปลี่ยนสิทธิ์แล้ว โปรแกรมทั้งหมดที่รันภายใต้บัญชีผู้ใช้ของคุณจะมีสิทธิ์ Full Control บนโฟลเดอร์นี้ (แม้โปรแกรมจะไม่ได้ Elevated) และแม้หลังจากบัญชีของคุณถูกลบออกจากกลุ่ม Local Administrators

พฤติกรรมนี้ของ File Explorer สร้างปัญหาเมื่อจัดการ Shared Network Folders บน Windows Server วิธีแก้ปัญหาชั่วคราว หลาย Windows Administrators เลือกจัดการ Shared Folders ผ่าน UNC Path (\\mun-fs01\docs\) แทนการเข้าถึงแบบ Local ในกรณีนี้ ไม่ต้องยกระดับสิทธิ์เมื่อเข้าถึง Directory และดังนั้นไม่มีการเปลี่ยนแปลง NTFS ACLs

โดยธรรมชาติ เมื่อต้องทำงานกับ System Files หรือ User Foลด่อยู่บ่อยๆ การแจ้งเตือน UAC แบบ Pop-up นี้กลายเป็นเรื่องรำคาญ เนื่องจากไม่ต้องการปิด UAC ผมจึงหาวิธีเริ่ม Exploler.exe แบบ Elevated

วิธีรัน File Explorer เป็น Administrator บน Windows 10 และ Windows Server

กระบวนการ Windows Explorer เริ่มต้นเมื่อผู้ใช้ Logon ด้วย Standard User Access Token ไม่สามารถ Elevate Explorer.exe Process ได้ด้วยวิธีมาตรฐาน ยังไม่สามารถเริ่ม Explorer Process ที่สองในโหมด "Run as admin" ได้ (ถูกบล็อกโดย Task CreateExplorerShellUnelevatedTask) Windows File Explorer ไม่รองรับการรัน Multiple Instances ของ explorer.exe Process ใน Security Contexts ที่ต่างกันใน Interactive User Session ดังนั้น ต้องจบกระบวนการ explorer.exe ปัจจุบันใน User Session ของคุณก่อน

สามารถ Kill กระบวนการ explorer.exe จาก Task Manager หรือด้วยคำสั่งต่อไปนี้ในคอนโซล PowerShell (อย่าลืมรัน powershell.exe เป็น Administrator):

taskkill /f /FI "USERNAME eq $env:UserName"/im explorer.exe
SUCCESS: The process "explorer.exe" with PID 3208 has been terminated.

เพื่อรันกระบวนการ explorer.exe เป็น Administrator ใช้คำสั่ง:

c:\windows\explorer.exe /nouaccheck

(NO|UAC|CHECK)

คำสั่งเหล่านี้จะจบกระบวนการ explorer.exe สำหรับผู้ใช้ปัจจุบัน และเริ่มต้นกระบวนการใหม่ ซึ่งจะสืบทอด Elevated Access Token ที่ powershell.exe รันด้วย

หรือเริ่มกระบวนการ Explorer ที่มีสิทธิ์สูงจาก Task Manager → File → Run New Task → explorer.exe /nouaccheck (อย่าลืมติ๊กตัวเลือก "Create this task with administrative privileges")

สามารถตรวจสอบได้ว่า Windows Explorer กำลังรัน Elevated ใน Task Manager เปิด Task Manager ไปที่แท็บ Details คลิกขวาที่คอลัมน์ใดๆ คลิก Select Columns และเปิดใช้งานคอลัมน์ Elevated เพื่อแสดง

ตามที่เห็น explorer.exe ตอนนี้มีแอตทริบิวต์ Elevated=Yes

หลังจากนั้น Explorer จะสามารถเปิด System Folder ใดๆ ได้โดยไม่มีคำเตือน UAC และ Child Processes ทั้งหมดที่รันจาก Windows Explorer จะรัน Elevated

ตัวอย่าง การแก้ไขไฟล์ hosts (c:\windows\system32\drivers\etc) สะดวกมาก: สามารถเปิดได้ทันทีจาก Explorer ด้วย Notepad ไม่ต้องเริ่ม Notepad.exe แยกต่างหากเป็น Administrator หรือ Different User

หากต้องการรัน explorer.exe แบบ Elevated บ่อยๆ สามารถสร้างไฟล์ *.bat หรือ *.ps1 ด้วยคำสั่งข้างต้นบน Desktop

เมื่อเสร็จแล้ว ต้องรีสตาร์ท explorer.exe ในโหมด Non-elevated:
taskkill /f /FI "USERNAME eq $env:UserName"/im explorer.exe
explorer.exe

ตามที่เห็น ตอนนี้ค่า Elevated สำหรับกระบวนการ explorer.exe เปลี่ยนเป็น No

เทคนิคการยกระดับ Windows Explorer นี้ทำงานได้ทั้งบน Windows Server 2016/2019 และ Windows 10 Builds ทั้งหมด

บน Windows Server 2012/R2 และ Windows 8 เพื่อรัน Explorer Process แบบ Elevated ต้องเปิด cmd.exe เป็น Administrator และรันคำสั่ง:
tskill explorer & explorer