เซสชันแบบโต้ตอบ 0 ใน Windows 7


14

ฉันพยายามที่จะเปิดตัว cmd.exe ในเซสชั่น 0 จนถึงตอนนี้ฉันได้ทำต่อไปนี้จากพรอมต์คำสั่งยกระดับ:

sc config UI0Detect start= auto
net start UI0Detect

และการตอบสนองบ่งชี้ว่าบริการเริ่มต้นอย่างถูกต้อง ณ จุดนี้ที่ฉันคิดว่าถ้าฉันเปลี่ยนไปใช้เซสชัน 0 cmd.exe จะทำงาน

ฉันสลับไปที่เซสชัน 0 โดยใช้คำสั่งต่อไปนี้:

rundll32 winsta.dll,WinStationSwitchToServicesSession

สิ่งนี้จะเปลี่ยนฉันเป็นเซสชัน 0 ได้สำเร็จ แต่หน้าต่างเดียวที่มีอยู่คือหน้าต่างที่มีตัวเลือกให้กลับไปที่เซสชัน 1

ฉันจะรับ cmd.exe เพื่อเปิดในเซสชั่น 0 ได้อย่างไร


ทำไมคุณต้องการทำเช่นนี้? UI0Detect อนุญาตให้บริการเก่าเปิดกล่องข้อความไม่ใช่เริ่มต้นแอป GUI ใหม่ cmd.exe มี GUI
Peter Hahndorf

6
@ PeterHahndorf ฉันเข้าใจว่ามันสนุกที่จะหันเหความสนใจในการตอบคำถามด้วยการพูดว่า "ลองย้อนกลับไปดูว่านี่คือสิ่งที่เราต้องทำจริง ๆ หรือเปล่าเพราะมันฟังดูไม่ดี" และเป็นวิธีที่ดีทีเดียว แต่เนื่องจากนี่เป็นสถานการณ์จำลองการดีบักและเป็นการแก้ไขด่วน (และเป็นทางเลือกในการใช้แอปของบุคคลที่สามเช่น AlwaysUp) ฉันไม่เห็นว่าการถาม "ทำไม" จึงเป็นประโยชน์ ขอบคุณอยู่ดี
omghai2u

ฉันคิดว่าปีเตอร์มีประเด็น คำถามที่คุณควรเขียนคือ "นี่คือสิ่งที่ฉันพยายามจะทำ" การแก้ไขอย่างรวดเร็วจะเกี่ยวข้องกับความเจ็บปวดในอนาคตเท่านั้น ฉันไม่สามารถนับได้กี่ครั้งที่ฉันได้ยิน "การแก้ไขด่วน" เท่านั้นที่ยังคงเห็น "การแก้ไขด่วน" ในการผลิตสามปีต่อมา . . ต้องการอีก "การแก้ไขด่วน" ฉันสมมติว่าคุณกำลังพิมพ์เพื่อเรียกใช้สคริปต์ชุดงานบางอย่าง?
surfasb

1
@surfasb คำถามที่คุณแนะนำเป็นหลักคำถามที่ฉันเขียน: "ฉันพยายามเปิด cmd.exe ในเซสชั่น 0" โปรดให้คำตอบที่เน้นไปที่คำถามนั้น ขอบคุณ และไม่มีโอกาสที่สิ่งนี้จะนำไปสู่การผลิตหรือเพื่อให้มันเกี่ยวข้องกับความเจ็บปวดในอนาคต วิธีที่ฉันทำเพื่อการผลิตได้รับการตั้งค่าไว้แล้ว แต่ฉันไม่สามารถใช้เพื่อการดีบักได้ วิธีที่ฉันใช้ในการดีบักนั้นยุ่งยากและเกี่ยวข้องกับการใช้แอพของบุคคลที่สาม
omghai2u

คำตอบ:


19

หากต้องการเปิดใช้งาน cmd.exe ในเซสชัน 0 ให้ใช้ psexec จากSysinternals

psexec.exe -s 0 cmd.exe

ตอนนี้คุณมีคอนโซลที่ทำงานอยู่ในเซสชั่น 0

คุณสามารถเริ่ม cmd.exe ในเซสชัน 0 และแสดง GUI:

psexec.exe -s -i 0 cmd.exe

ด้วยวิธีนี้เมื่อคุณสลับไปที่เซสชัน 0 cmd.exe จะรอคุณอยู่ที่นั่น

คุณมีสิทธิ์มากมายเท่าที่คุณจะได้รับใน Windows 7:

whoami /all

ถ้าคุณใช้ PsTools อื่น ๆ อย่าลืมใช้สวิตช์ / accepteula:

pslist /accepteula

มิฉะนั้นโปรแกรมจะปรากฏขึ้นกล่องข้อความเพื่อขอให้ยอมรับ Eula โปรแกรมจะหยุดทำงานเนื่องจากไม่มี UI ในเซสชัน 0 เพื่อปิดกล่องข้อความ

ในการตรวจสอบว่าคุณกำลังทำงานในเซสชัน 0 คุณสามารถใช้ qprocess:

qprocess /ID:0

คุณจะเห็น 'cmd.exe' ระหว่างกระบวนการบริการทั้งหมด


ขอบคุณมากที่พยายามตอบคำถามของฉัน สิ่งนี้จะได้ผลอย่างแน่นอนความตั้งใจเฉพาะของฉัน (ตามที่ระบุไว้ในความคิดเห็น) อย่างไรก็ตามเพื่อหลีกเลี่ยงการใช้แอปของบุคคลที่สาม มีวิธีที่ดีในการทำเช่นนี้หรือไม่ซึ่งไม่จำเป็นต้องใช้เครื่องมือ SysInternals (หรือสิ่งใดก็ตามที่ไม่มีใน Windows) ขอบคุณอีกครั้ง.
omghai2u

2
ฉันไม่พิจารณาเครื่องมือ 'บุคคลที่สาม' ของ Sysinternal จาก Microsoft และคุณไม่ต้องติดตั้ง
Peter Hahndorf

ขออภัยฉันกำลังพิจารณาสิ่งที่ไม่ได้ติดตั้งโดยค่าเริ่มต้น "บุคคลที่สาม"
omghai2u

จางไป เยี่ยมมากขอบคุณ ทำงานได้อย่างสมบูรณ์แบบสำหรับการเริ่มกระบวนการในเซสชั่น 0 (ซึ่งหมายความว่ามันจะทำงานต่อเมื่อคุณออกจากระบบ)
Daniel James Bryars

5
บรรทัดคำสั่งแรกไม่ถูกต้อง: -sรันในฐานะSYSTEMผู้ใช้และไม่รับอาร์กิวเมนต์ คุณอาจหมายถึง-i 0ในตัวอย่างแรกและ-s -i 0ในตัวอย่างที่สอง?
jwg

1

มันจะไม่ทำงาน มันเพิ่งเริ่มกระบวนการเป็นระบบ

บริการเป็นโปรแกรมที่เขียนในวิธีพิเศษเพื่อยอมรับคำสั่งจากผู้จัดการควบคุมบริการ

MS มียูทิลิตีที่อนุญาตให้เรียกใช้โปรแกรมเป็นบริการ มันถูกเรียกSrvanyและอยู่ในเครื่องมือ Kit ทรัพยากรของ Windows 2003

ดาวน์โหลดเครื่องมือชุดทรัพยากรของ Windows Server 2003


0

ฉันค้นพบวิธีแก้ปัญหาโดยบังเอิญในวันหนึ่ง แต่http://www.alex-ionescu.com/?p=59ยังจัดทำเอกสารวิธีแก้ปัญหาใกล้กับสิ่งที่ฉันพบ

สร้างแบตช์ไฟล์ด้วยรายการต่อไปนี้ (เรียกว่า some.bat)

start cmd

จากนั้นสร้างบริการเพื่อเรียกไฟล์แบตช์นี้ (ใช้พรอมต์คำสั่งของผู้ดูแลระบบ)

sc create access0 type= interact type= own binpath= some.bat

(สังเกตช่องว่างหลังแต่ละ = และฉันแนะนำให้ใช้พา ธ แบบเต็มสำหรับ some.bat)

จากนั้นเป็นเรื่องของการเริ่มต้นบริการ

sc start ui0detect
sc start access0

(ไม่จำเป็นต้องทำการเริ่มต้นอัตโนมัติ ui0detect ด้วย sc config UI0Detect start = auto)

และถ้าทุกอย่างเป็นไปด้วยดีคุณจะได้รับกล่องข้อความที่กำลังกระพริบ! ไปที่ดูข้อความและคุณจะมีคำสั่ง Admininstrator (nt Authority \ system) พรอมต์ที่จะไม่ถูกทำลายโดยอัตโนมัติโดยการเริ่มต้นบริการที่ล้มเหลว

วิธีนี้ใช้ได้ผลแม้ว่าบางครั้งจะไม่สามารถลองได้ในครั้งแรก

ฉันเชื่อว่านี่จะช่วยให้คุณเข้าถึงเซสชันการโต้ตอบ 0 เท่านั้นซึ่งมีอยู่สำหรับผู้ใช้ nt Authority \ system เท่านั้น


-2

คุณสามารถใช้ทางลัดเริ่ม (Windows) + R เพื่อเริ่มกล่องโต้ตอบ 'เรียกใช้' จากนั้นเพียงพิมพ์ 'cmd' (ไม่มีเครื่องหมายอัญประกาศ) และ voila cmd


3
ยินดีต้อนรับสู่ SuperUser โพสต์ของคุณไม่ตอบคำถาม OPs เริ่มต้นCMDได้ตามปกติไม่ได้Session 0ใส่หนึ่งเข้า
ฉันพูดว่า Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.