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

วิธีรัน CMD/Program ภายใต้ SYSTEM (LocalSystem) ใน Windows

เพื่อดำเนินการบางอย่างใน Windows การมีสิทธิ์ Administrator เพียงอย่างเดียวอาจไม่เพียงพอ ตัวอย่างเช่น คุณไม่สามารถแทนที่หรือลบไฟล์ระบบและ Registry Keys บางรายการ หยุดบริการระบบ หรือดำเนินการอื่นๆ ที่อาจเป็นอันตรายและส่งผลต่อความเสถียรของระบบปฏิบัติการ ในกรณีเหล่านี้ System Administrator สามารถ Take Ownership ของไฟล์หรือออบเจ็กต์อื่นๆ หรือดำเนินการ نيابة บัญชีระบบ ในบทความนี้ เราจะดูวิธีรันแอปหรือ Command Prompt เป็นบัญชี SYSTEM (LocalSystem) ที่มีสิทธิ์สูงสุดบน Windows 10

Disclaimer การเปลี่ยนแปลง Windows Image นี้ในนามของบัญชี SYSTEM เป็นการดำเนินการที่ไม่เป็นมาตรฐาน โปรดทราบว่าการดำเนินการที่ไม่ถูกต้องด้วยสิทธิ์ NT AUTHORITY\SYSTEM อาจทำให้ Windows ของคุณเสียหาย ในทางปฏิบัติ การรัน Process เป็น System Account นادرๆ ที่ใช้ ในส่วนใหญ่คุณสามารถแก้ปัญหาได้ด้วยวิธีมาตรฐานบางอย่าง: runas, รันแอปโดยไม่มีสิทธิ์ Admin และปิด UAC Prompt, Take Ownership บนไฟล์/Registry Keys, ปิด UAC สำหรับทั้งหมดหรือแอปบางอย่าง, ให้สิทธิ์จัดการบริการสำหรับ Non-Admin Users

บัญชี SYSTEM Built-in ถูกใช้โดย SCM (Service Control Manager) เพื่อรันและจัดการ System Services โดยใช้บัญชี System (อาจเรียกว่า NT AUTHORITY\SYSTEM, Local System หรือ Computer\LocalSystem) บริการและกระบวนการระบบส่วนใหญ่ถูกรัน (รวมถึง NT OS Kernel) เปิด MMC Snap-in จัดการบริการ (services.msc) และสังเกตบริการที่มี Local System ในคอลัมน์ LogOnAs บริการเหล่านี้กำลังทำงานภายใต้บัญชี SYSTEM

วิธีรัน CMD/Program ภายใต้ SYSTEM (LocalSystem) ใน Windows

วิธีรัน CMD ภายใต้ Local System Account ใน Windows (เวอร์ชันก่อน Vista)

ใน Windows XP และ Windows Server 2003 (ที่ไม่ได้รับการสนับสนุนแล้ว) มีเทคนิคน่าสนใจที่ช่วยให้คุณรันโปรแกรมหรือ Command Prompt แบบโต้ตอบ (cmd.exe) ด้วย System Privileges โดยใช้ Task Scheduler เพียงพอที่จะเปิด Command Prompt ภายใต้ Admin Account และรันคำสั่งต่อไปนี้:

at 10:23 /interactive cmd.exe

โดยที่ 10:23 คือ เวลาปัจจุบัน + หนึ่งนาที (ในรูปแบบ 24 ชั่วโมง)

เมื่อถึงเวลาที่ระบุ Command Prompt จะปรากฏขึ้นทำงานภายใต้ Local System Account หากคุณรันคำสั่งนี้ใน Terminal (RDP) Session บน Windows Server 2003/XP โปรดทราบว่า Command Prompt ที่มี System Privileges จะแสดงใน Console Session เท่านั้น (คุณสามารถเชื่อมต่อกับ Console ของคอมพิวเตอร์ผ่าน mstsc /console หรือ mstsc /admin)

วิธีรัน CMD/Program ภายใต้ SYSTEM (LocalSystem) ใน Windows

Windows 10 ไม่รองรับการรัน Interactive Command Prompt โดยใช้คำสั่ง at แนะนำให้ใช้ schtasks.exe แทน

Warning: Due to security enhancements, this task will run at the time expected but not interactively. Use schtasks.exe utility if interactive task is required ('schtasks /?' for details). The request is not supported.

วิธีรัน CMD/Program ภายใต้ SYSTEM (LocalSystem) ใน Windows

วิธีรัน CMD/Process เป็น SYSTEM บน Windows 10 โดยใช้ PSExec

ใน Windows 7 หรือใหม่กว่า ไม่สามารถรัน Interactive Command Prompt ภายใต้ System Account โดยใช้ Task Scheduler ได้ เพื่อรันคำสั่งในฐานะ NT Authority\ System คุณสามารถใช้ยูทิลิตี้ PSExec.exe โดย Sysinternals

คุณสามารถดาวน์โหลดเครื่องมือ PSExec.exe จากเว็บไซต์ Microsoft: https://docs.microsoft.com/en-us/sysinternals/downloads/psexec Windows Administrator ทุกคนคุ้นเคยกับ PSExec ในส่วนใหญ่ ใช้เพื่อจัดการ Windows แบบ Remote และยังมีฟีเจอร์ที่มีประโยชน์สำหรับการรัน Process นามบัญชี System บาง Antivirus อาจระบุ PSExec.exe ว่าเป็นโปรแกรมที่อาจเป็นอันตราย (โดยไอ้ทีนี้ psexec ถูกใช้เผยแพร่วไวรัส notpetya ที่โชคไม่ดี)

PSExec ไม่ต้องติดตั้ง เปิด Command Prompt ที่ขยับสิทธิ์ ("Run as administrator") ไปที่โฟลเดอร์ที่ PSexec.exe อยู่ และรันคำสั่งต่อไปนี้:

psexec -i -s cmd.exe

-i – อนุญาตให้เริ่ม Process/App ในโหมดโต้ตอบ (ผู้ใช้สามารถโต้ตอบกับแอปบน Desktop ได้ หากไม่ใช้พารามิเตอร์นี้ Process จะเริ่มใน Console Session)

–s – หมายความว่า Process (ในกรณีนี้ Command Prompt) ต้องรันในฐานะ System Account

ในครั้งแรกที่รัน PsExec คุณจะได้รับแจ้งให้ยอมรับ License Agreement

วิธีรัน CMD/Program ภายใต้ SYSTEM (LocalSystem) ใน Windows

หลังจากรันคำสั่ง หน้าต่าง Command Prompt ใหม่จะปรากฏขึ้นทำงานภายใต้บัญชี NT Authority\System ตรวจสอบให้แน่ใจว่าจริง โดยรันคำสั่งนี้:

whoami

วิธีรัน CMD/Program ภายใต้ SYSTEM (LocalSystem) ใน Windows

ดังนั้น คุณสามารถรันโปรแกรม คำสั่ง หรือสคริปต์ใดๆ ในฐานะ System Account ได้ เพียงแทนที่ cmd.exe ในพารามิเตอร์ PsExec ด้วยชื่อไฟล์ Executable ของแอปที่คุณต้องการรัน

ในหน้าต่าง Command Prompt ที่ปรากฏขึ้น คุณสามารถรันคำสั่งใดๆ ในฐานะ SYSTEM ตอนนี้คุณสามารถเปลี่ยน เปลี่ยนชื่อ หรือลบไฟล์ระบบ/Registry Keys ที่เป็นของ TrustedInstaller หรือ SYSTEM โปรแกรมหรือกระบวนการทั้งหมดที่คุณเริ่มในหน้าต่างนี้จะทำงานด้วย LocalSystem Privileges ที่ขยับแล้ว ตัวอย่างเช่น คุณสามารถหยุด System Service หรือปิดไฟล์ที่ถูกเปิดโดย System Process

โดยใช้ PSExec คุณสามารถเปิด Interactive Command Prompt ด้วยสิทธิ์ NT AUTHORITY\SYSTEM บนคอมพิวเตอร์ระยะไกลได้ ในการทำเช่นนี้ ให้ใช้คำสั่งต่อไปนี้:

psexec -s \\mun-b21pc12 cmd.exe

หากเกิดข้อผิดพลาด "Couldn't install PSEXESVC service" ให้ตรวจสอบว่า:

  • Command Prompt ถูกรันในฐานะ Administrator;
  • ไม่มี Instance ของ PSEXESVC Service อื่นที่กำลังทำงาน วิธีรัน CMD/Program ภายใต้ SYSTEM (LocalSystem) ใน Windows

ยังมีเครื่องมือของบุคคลที่สามหลายตัวสำหรับรันแอปในฐานะ System Account (AdvancedRun, RunAsSystem, PowerRun) แต่ผมไม่เห็นประโยชน์ในการใช้พวกมัน ก่อนอื่น พวกมันเป็นของบุคคลที่สาม และคุณไม่สามารถแน่ใจได้ว่าไม่มีรหัสอันตรายในนั้น สอง ทูล PsExec อย่างเป็นทางการของ Microsoft ทำงานได้ดีเยี่ยม