เหตุใดบริการ Windows จึงไม่มี GUI


22

ฉันใช้คุณสมบัตินี้ใน Windows รุ่นก่อนหน้าเช่น XP และ NT ฉันสามารถเรียกใช้ GUI จากบริการ Windows ได้ แต่มันเป็นไปไม่ได้ในรุ่นที่ใหม่กว่า

อะไรคือสาเหตุของการลบคุณสมบัตินี้? เหตุใดบริการ Windows จึงไม่มี GUI

คำตอบ:


47

เหตุผลด้านความปลอดภัยส่วนใหญ่

ที่ฉันเข้าใจเมื่อบริการ windows สร้างตัวควบคุม GUI เช่น MessageBox พวกเขามักจะเห็นเฉพาะในเซสชั่นที่บริการที่ทำงานในเช่นเซสชั่น 0 ซึ่งเคยเป็นผู้ใช้ครั้งแรกที่เข้าสู่ระบบในท้องถิ่นหรือโดยคนที่เข้าสู่ระบบโดยใช้ mstsc / admin ดังนั้นผู้ใช้รายนี้จะเห็นการควบคุมเหล่านี้และสามารถโต้ตอบกับบริการได้

แต่ด้วยเหตุผลด้านความปลอดภัยขณะนี้เซสชัน 0 ถูกจองแล้วและผู้ใช้รายแรกที่เข้าสู่ระบบจะได้รับเซสชันใหม่และด้วยเหตุนี้จึงไม่เห็นการควบคุม GUI

เนื่องจากการแบ่งบริการค่อนข้างมากสำหรับความเข้ากันได้จึงมีกระบวนการ (ดูบล็อก MSDN นี้)ที่พยายามตรวจสอบว่ามีข้อความใดปรากฏขึ้นและป๊อปอัปพร้อมคำเตือน 'โปรแกรมที่ทำงานบนคอมพิวเตอร์เครื่องนี้กำลังพยายามแสดงข้อความ 'และอนุญาตให้คุณดูหรือไม่สนใจข้อความ

Microsoft มี WhitePaper ในหัวข้อนี้ซึ่งคุณสามารถดาวน์โหลดได้จากที่นี่

ฉันยังสงสัยว่าเหตุผลเล็กน้อยอีกประการหนึ่งก็เพราะคุณสมบัตินี้ถูกนำไปใช้ในทางที่ผิด / เข้าใจผิดและนำไปสู่การออกแบบที่ไม่ดี ตัวอย่างเช่นฉันเคยมีเซิร์ฟเวอร์เก่าที่มีบริการบุคคลที่สามที่แสดงการแจ้งเตือน / ข้อผิดพลาดบางอย่างโดยใช้กล่องข้อความแทนที่จะเขียนลงในบันทึกเหตุการณ์ แต่ฉันไม่เคยเข้าสู่ระบบในประเทศและไม่ค่อยเข้าสู่ระบบในโหมดผู้ดูแลระบบและด้วยเหตุนี้ฉันจะไม่เห็นข้อความ


1
ฉันมีความรู้สึกว่ามีบางอย่างเกี่ยวกับ UAC - การรักษาความปลอดภัยซึ่งหมายความว่า UAC พรอมต์ไม่สามารถแชร์เซสชันเวิร์กสเตชันกับผู้ใช้แบบโต้ตอบหรือแฮ็กเกอร์อาจปรากฏตัวพร้อม ๆ
gbjbaanb

23

บริการอินเทอร์แอคทีฟเคยเป็นไปได้แต่โมเดลบริการเป็นของกระบวนการที่ทำงานโดยไม่ขึ้นกับผู้ใช้ใด ๆ พวกเขาถูกออกแบบมาเพื่อให้ทำงานแบบอัตโนมัติและไม่ควรใช้ GUI

ไม่สามารถใช้บริการแบบโต้ตอบได้ตั้งแต่ Windows Vista ดังนั้นจึงไม่ควรใช้อีกต่อไป

หากคุณต้องการโต้ตอบกับบริการหน้าเว็บที่ฉันเชื่อมโยงเพื่อแนะนำให้สร้างแอปพลิเคชัน GUI แยกต่างหากที่สื่อสารกับบริการผ่านการสื่อสารระหว่างกระบวนการ (IPC) ของการเรียงลำดับบางอย่าง - เช่นไปป์ที่มีชื่อ


สิ่งที่คุณชอบนั้นล้าสมัย: บริการไม่สามารถโต้ตอบกับผู้ใช้งานโดยตรงใน Windows Vista ดังนั้นเทคนิคที่กล่าวถึงในหัวข้อการใช้บริการแบบโต้ตอบไม่ควรใช้ในรหัสใหม่
nemke

10

เพราะบริการควรทำงานในพื้นหลังโดยไม่ต้องโต้ตอบกับผู้ใช้ พวกเขาอาจทำงานจริงในขณะที่ไม่มีผู้ใช้เข้าสู่ระบบ


เหตุใดจึงมีคุณลักษณะนี้ในรุ่นก่อนหน้า เมื่อพิจารณาคำตอบแล้วจะไม่มีการสื่อสารระหว่างบริการ windows กับแอปพลิเคชันเดสก์ท็อป ดังนั้นคำตอบนี้อาจไม่เหมาะสม
อรุณ

3
@Arun - ขึ้นอยู่กับตรรกะนั้นสิ่งที่เสียหายจะไม่ได้รับการแก้ไข คำตอบของ Michael นั้นถูกต้อง - บริการไม่ควรมี guis เพียงเพราะ Windows รุ่นก่อนหน้ามีพวกเขา (บริการที่มี guis) ไม่ได้หมายความว่าพวกเขาควรจะมีพวกเขา

8
@ วิ่งมันไม่เป็นความจริงไม่มีการสื่อสารระหว่างแอพเดสก์ท็อปและบริการเพียงว่าบริการนั้นไม่มี GUI ค่อนข้างแอพเดสก์ท็อปมี GUI และสื่อสารกับเซิร์ฟเวอร์
พอล Hiemstra

ดังนั้นบริการ windows สามารถมี GUI แต่พวกเขาไม่ควรมีพวกเขา?
อรุณ

1
@Arun บริการไม่ได้มี GUIs แต่มักจะถูกควบคุมโดยแอพพลิเคชั่นส่วนหน้าแยกต่างหากที่สามารถควบคุมการบริการโดยการสื่อสารกับมันในบางลักษณะ (ผ่านทางท่อที่มีชื่อ, ซ็อกเก็ต, ... )
GrandmasterB

0

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

ตอนนี้ทุกคนพัฒนาบริการแบบเนทีฟและเพิ่มแอปพลิเคชันหรือบันทึกเพื่อจัดการบริการ นั่นเป็นรูปแบบการออกแบบที่ดีและตอนนี้ถูกใช้งานเกือบตลอดเวลา

ดังนั้นดูเพิ่มเติมว่าเป็นมรดกที่เป็นไปได้


-1

บริการมีไว้สำหรับการดำเนินการที่ไม่ได้เข้าร่วมโดยส่วนใหญ่อยู่ในพื้นหลังบริการชื่อนั้นหมายถึงทำหน้าที่เป็นเซิร์ฟเวอร์สำหรับแอปพลิเคชันไคลเอนต์หรือบริการอื่น ๆ ที่ใช้บริการนี้ ดังนั้น MS อาจต้องการยึดติดกับพื้นฐานและต้องการวาดความแตกต่างที่ชัดเจนระหว่างบริการและแอพดังนั้นแอพจึงทำให้การใช้งานไม่ว่างและให้บริการตอบสนองวัตถุประสงค์อย่างเงียบ ๆ ทำไมถึงต้องใช้มีดทำครัวเพื่อตัดนิล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.