นับตั้งแต่เปิดตัวบริการเทอร์มินัล "ผู้ใช้ปัจจุบัน" สามารถเป็นพหูพจน์ แม้แต่ XP ยังรองรับการสับเปลี่ยนผู้ใช้อย่างรวดเร็ว
สิ่งที่ใกล้เคียงที่สุดที่คุณจะได้รับคือ "ผู้ใช้เชื่อมต่อกับเซสชันของคอนโซล" สำหรับเรื่องนี้ใช้WTSGetActiveConsoleSessionId () + WTSQueryUserToken () + CreateEnvironmentBlock () + CreateProcessAsUser ()
ฉันเขียนสิ่งนี้: https://gist.github.com/871048 - คอมไพล์รันด้วยพา ธ เต็มไปยังไฟล์แบตช์ของคุณเป็นอาร์กิวเมนต์
ใช่ต้องใช้. NET Runtime แต่เป็นไปได้ว่าระบบของคุณมีอยู่แล้ว คอมไพเลอร์ส่วนหนึ่งของรันไทม์เช่นกัน: %SystemRoot%\Microsoft.NET\Framework64\v3.5\csc.exe
(เวอร์ชันใด ๆ ที่ขึ้นต้นด้วยv2.*
จะใช้งานได้)
หมายเหตุ: WTSQueryUserToken () ต้องโปรแกรมที่จะทำงานตามที่LocalSystem (ตามเอกสาร , SeTcbPrivilegeไม่เพียงพอ แต่ฉันยังไม่ได้ตรวจสอบ)
psexec
เลย การใช้มันอาจจะง่ายกว่า