บริการสามารถหยุดและเริ่มต้นได้โดยใช้สองคำสั่งใน Command Prompt Shell
- บริการเริ่มต้นสุทธิ "บริการบางอย่าง"
- sc start "บริการบางอย่าง"
ความแตกต่างระหว่างคำสั่งเหล่านี้คืออะไร?
บริการสามารถหยุดและเริ่มต้นได้โดยใช้สองคำสั่งใน Command Prompt Shell
ความแตกต่างระหว่างคำสั่งเหล่านี้คืออะไร?
คำตอบ:
ใน Windows NT ทั้งสองคำสั่งเข้าถึงตัวจัดการบริการเดียวกัน ความแตกต่างส่วนใหญ่อยู่ในส่วนที่ผู้ใช้มองเห็น:
net
เก่ากว่า - นับจากวันที่ของ MS-DOS และ OS / 2 ในความเป็นจริง
sc
ปรากฏกับ Windows NT (ไม่แน่ใจว่ารุ่น)
net
สามารถเริ่มหยุดและหยุดบริการได้เท่านั้น
sc
มีการควบคุมขั้นสูงเพิ่มเติมสามารถสอบถามสถานะสร้างและลบบริการเปลี่ยนการกำหนดค่าและความปลอดภัย: sc config beep start= demand
net
ทำงานในท้องถิ่นเท่านั้น
sc
สามารถใช้ผ่านเครือข่าย: sc \\snow start rpcapd
net
ยอมรับชื่อที่แสดง: net start "Windows Firewall"
sc
ต้องการชื่อบริการเสมอ: sc start SharedAccess
คำตอบ Grawity เป็นประโยชน์อย่างแน่นอน แต่ผมพบความแตกต่างพื้นฐานระหว่างคำสั่งเหล่านี้รายละเอียดในhttp://cbfive.com/command-line-service-management-net-v-sc/ โดยเฉพาะอย่างยิ่งหน้านี้ตั้งข้อสังเกตว่าสองคำสั่งเหล่านี้แตกต่างกันในเวลาของพวกเขา: "net" เป็นแบบซิงโครนัสและ "sc" แบบอะซิงโครนัส
SC ส่งการควบคุมไปยังบริการแล้วกลับไปที่พรอมต์คำสั่ง ซึ่งโดยปกติจะส่งผลให้ SC START ส่งคืนบริการในสถานะ START_PENDING NET START จะรอให้บริการที่กำลังเริ่มเข้าสู่สถานะเริ่มต้นเต็มก่อนที่จะส่งคืนการควบคุมที่พร้อมท์คำสั่ง
...
[L] ike SC START, SC STOP ไม่รอให้บริการหยุด และจะกลับมาที่ STOP_PENDING บ่อยครั้งสำหรับการหยุดบริการหลายครั้ง ในทางกลับกัน NET STOP จะรอให้บริการหยุด ก่อนที่จะกลับไปที่พรอมต์คำสั่ง
...
NET และ SC มีแนวคิดที่แตกต่างกันในสิ่งที่พวกเขาคิดว่าเป็นเงื่อนไขแห่งความสำเร็จ คำถามที่ SC ถามเพื่อตรวจสอบว่ามันประสบความสำเร็จหรือไม่“ ฉันได้ส่งการควบคุมการหยุดไปยังบริการสำเร็จหรือไม่?” ถ้าเป็นเช่นนั้นไม่ว่าบริการจะหยุดทำงานหรือไม่ NET ถามคำถาม“ บริการที่ฉันพยายามจะหยุดกลับมาว่าหยุดได้หรือไม่” ถ้าเป็นเช่นนั้นก็เป็นไปตามเงื่อนไข หากไม่เป็นเช่นนั้นไม่ว่าด้วยเหตุผลอะไรก็ตาม NET ก็ล้มเหลวในการประสบความสำเร็จ
สำหรับสิ่งที่คุ้มค่าฉันพบว่า sc start / stop มีความน่าเชื่อถือมากกว่า start / stop net บางครั้งการเริ่มต้น / หยุดสุทธิทำให้บริการติดค้างอยู่ในสถานะเริ่มต้น / หยุดขณะที่สิ่งนี้ไม่เคยเกิดขึ้นกับฉันด้วยการเริ่ม / หยุด sc อาการเริ่มต้น / หยุดสุทธิมีแนวโน้มที่จะเกิดขึ้นบ่อยครั้งถ้าบริการถูกฆ่า (ผ่าน taskkill) เช่นพยายามเริ่มบริการด้วยการเริ่มต้นสุทธิหลังจาก taskkill
เหลือที่จะบอกว่าถ้ารูทีน OnStart () ของบริการใช้เวลานานเกินไปให้NET START
ส่งคำสั่ง stop ไปยังบริการและส่งกลับข้อผิดพลาดต่อไปนี้:
บริการ ServiceName เริ่มต้น ........
ไม่สามารถเริ่มบริการ ServiceName ได้
บริการไม่ได้รายงานข้อผิดพลาด
ความช่วยเหลือเพิ่มเติมพร้อมใช้งานโดยการพิมพ์ NET HELPMSG 3534
สิ่งนี้เกิดขึ้นแม้ว่าบริการได้เริ่มต้นและหยุดทำงานเรียบร้อยแล้ว !!
ฉันพบโพสต์นี้ที่นี่ซึ่งอาจน่าสนใจ: ไม่สามารถเริ่มบริการได้