จะถอนการติดตั้ง Windows Service ได้อย่างไรเมื่อไม่มีการดำเนินการให้เหลืออยู่ในระบบ


166

ฉันจะถอนการติดตั้งบริการของ Windows ได้อย่างไรเมื่อไม่มีการดำเนินการที่เหลืออยู่ในระบบ ฉันไม่สามารถรันได้installutil -uเนื่องจากไม่มีไฟล์ที่รันได้บนระบบ ฉันยังสามารถเห็นรายการสำหรับบริการในคอนโซลบริการ

สาเหตุของสถานะนี้อาจเป็นเพราะปัญหาในแพ็คเกจ msi ที่ไม่ได้ลบบริการอย่างถูกต้อง แต่ฉันจะแก้ไขได้อย่างไรเมื่อบริการอยู่ในสถานะนี้


คำตอบ:


325

คุณควรจะถอนการติดตั้งโดยใช้ sc.exe (ฉันคิดว่ามันรวมอยู่ใน Windows Resource Kit) โดยการเรียกใช้คำสั่ง "ผู้ดูแลระบบ" ต่อไปนี้:

sc.exe delete <service name>

ที่ไหน <service name>เป็นชื่อของการให้บริการของตัวเองในขณะที่คุณเห็นมันในคอนโซลการจัดการการบริการที่ไม่ได้มาจากใน EXE

คุณสามารถค้นหา sc.exe ในโฟลเดอร์ System และต้องการสิทธิ์ระดับผู้ดูแลในการเรียกใช้ ข้อมูลเพิ่มเติมในบทความ Microsoft KB นี้ข้อมูลเพิ่มเติมในบทความนี้

หรือคุณสามารถโทรโดยตรงDeleteService () api วิธีนี้จะซับซ้อนกว่านี้เล็กน้อยเนื่องจากคุณต้องจัดการกับผู้จัดการควบคุมบริการผ่านOpenSCManager ()และอื่น ๆ แต่ในทางกลับกันมันช่วยให้คุณสามารถควบคุมสิ่งที่เกิดขึ้นได้มากขึ้น


มันทำสิ่งที่ฉันต้องการและลบบริการออกจากรีจิสทรี มันจะไม่ปรากฏในคอนโซลบริการอีกต่อไป ขอบคุณ!
แมกนัส Lindhe

ฉันได้รับ "การเข้าถึงถูกปฏิเสธ" จะทำอย่างไรต่อไป
Nick

4
หมายเหตุสำหรับผู้ที่พยายามใช้คำสั่งในวิธีที่ 1 ใน PowerShell: sc ไม่ใช่สำหรับการสื่อสารกับตัวจัดการควบคุมบริการ มันเป็นคำสั่งชุดเนื้อหา ใช้ sc.exe แทน
Yasser Sinjab

1
หากคุณได้รับข้อผิดพลาด 1,072 ตรวจสอบให้แน่ใจว่าคุณไม่ได้เปิดแผงควบคุมบริการ (ดูคำถามอื่น ๆ นี้ )
Giles

ฉันได้รับข้อผิดพลาดด้านล่าง [SC] OpenService FAILED 1060: บริการที่ระบุไม่มีอยู่ในฐานะบริการที่ติดตั้ง ต่อมาลองแบบเดียวกันกับ power shell และใช้งานได้!
crazydan

24

ลบ Windows Service ผ่าน Registry

มันง่ายมากที่จะลบบริการออกจากรีจิสทรีหากคุณรู้เส้นทางที่ถูกต้อง นี่คือวิธีที่ฉันทำ:

  1. เรียกใช้RegeditหรือRegedt32

  2. ไปที่รายการรีจิสทรี "HKEY_LOCAL_MACHINE / ระบบ / CurrentControlSet / Services"

  3. ค้นหาบริการที่คุณต้องการลบและลบ คุณสามารถดูคีย์เพื่อทราบว่าไฟล์ใดที่บริการใช้และลบทิ้งด้วย (ถ้าจำเป็น)

ลบบริการ Windows ผ่านหน้าต่างคำสั่ง

หรือคุณสามารถใช้พรอมต์คำสั่งและลบบริการโดยใช้คำสั่งต่อไปนี้:

sc ลบ

นอกจากนี้คุณยังสามารถสร้างบริการโดยใช้คำสั่งดังต่อไปนี้

sc สร้าง "MorganTechService" binpath = "ไฟล์ C: \ Program Files \ MorganTechSPace \ myservice.exe"

หมายเหตุ: คุณอาจต้องรีบูตระบบเพื่อให้ได้รับการอัพเดตรายการในตัวจัดการบริการ


3
ทำมันด้วยวิธีที่ปลอดภัยรีจิสทรี? "ผลลัพธ์สุดท้าย" ของวิธีรีจิสทรีเหมือนกับ "ผลลัพธ์สุดท้าย" ของsc deleteหรือไม่
Pacerier

5
ไม่ฉันเพิ่งลองลบบริการจาก regedit โดยตรง เป็นผลให้ตอนนี้รายการของบริการที่ฉันต้องการลบยังคงอยู่ในบริการในขณะที่คำอธิบายของมันแสดงให้เห็น: "<ล้มเหลวในการอ่านคำอธิบายรหัสข้อผิดพลาด: 2>"
GJ

11

พบได้ที่นี่

ฉันเพิ่งลองใช้ windows XP ใช้งานได้

คอมพิวเตอร์เฉพาะที่: sc \\ ลบ [ชื่อบริการ]

  Deleting services in Windows Server 2003

  We can use sc.exe in the Windows Server 2003 to control services, create services and delete services. Since some people thought they must directly modify the registry to delete a service, I would like to share how to use sc.exe to delete a service without directly modifying the registry so that decreased the possibility for system failures.

  To delete a service: 

  Click “start“ - “run“, and then enter “cmd“ to open Microsoft Command Console.

  Enter command:

  sc servername delete servicename

  For instance, sc \\dc delete myservice

  (Note: In this example, dc is my Domain Controller Server name, which is not the local machine, myservice is the name of the service I want to delete on the DC server.)

  Below is the official help of all sc functions:

  DESCRIPTION:
    SC is a command line program used for communicating with the
    NT Service Controller and services. 
  USAGE:
          sc

10

นี่คือสคริปต์ powershell เพื่อลบบริการ foo

$foo= Get-WmiObject -Class Win32_Service -Filter "Name='foo'"
$foo.delete()


3

สร้างสำเนาของ executables ของบริการเดียวกันและวางบนเส้นทางเดียวกันของบริการที่มีอยู่แล้วถอนการติดตั้ง


นั่นเป็นคำแนะนำที่ดี หากไม่ได้ผลเขาอาจต้องติดตั้งใหม่ให้เรียกใช้ installutil -u แล้วถอนการติดตั้ง
wcm

เราจะต้องสร้างสำเนาของ exe เดียวกันหรือเปลี่ยนชื่อไฟล์อื่น ๆ จะทำงานได้ดี?
Imran Rizvi

@Samiksha ฉันคิดว่าเขาบอกว่าเขาไม่มี " สำเนาของไฟล์ปฏิบัติการ "?
Pacerier

3

ฉันจะใช้ PowerShell สำหรับสิ่งนี้

Remove-Service -Name "TestService"

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/remove-service


มีเฉพาะใน PS6
BozoJoe

ฉันได้รับข้อผิดพลาดด้านล่าง [SC] OpenService FAILED 1060: บริการที่ระบุไม่มีอยู่ในฐานะบริการที่ติดตั้ง หลังจากนั้นลอง sc ลบ <service name> ด้วย power shell และใช้งานได้! ขอบคุณแนวคิดของ power shell
crazydan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.