ฉันจะถอนการติดตั้งบริการ Windows ได้อย่างไรหากไฟล์ไม่มีอยู่อีกต่อไป


570

ฉันจะถอนการติดตั้ง. NET Windows Service ได้อย่างไรหากไฟล์บริการไม่มีอยู่อีกต่อไป

ฉันติดตั้ง. NET Windows Service โดยใช้ InstallUtil ฉันได้ลบไฟล์ไปแล้ว แต่ลืมที่จะเรียกใช้

 InstallUtil /u

เป็นครั้งแรก ดังนั้นบริการยังคงอยู่ใน Services MMC

ฉันต้องเข้าไปในรีจิสทรีหรือไม่? หรือมีวิธีที่ดีกว่า



2
คุณหยุดให้บริการก่อนหรือไม่ (-> net หยุดบริการของคุณ)
Jos

ด้ายมากที่เกี่ยวข้องอย่างใกล้ชิดที่นี่
RBT

เว็บไซต์นี้ช่วยฉันและฉันหวังว่าจะช่วยคุณได้ในปัญหานี้howtogeek.com/howto/windows-vista/?hl=th
อาเหม็ดเอลเบนเดรี

คำตอบ:


1130

คุณมีอย่างน้อยสามตัวเลือก ฉันได้แสดงไว้ตามลำดับการใช้งาน

วิธีที่ 1 - คุณสามารถใช้เครื่องมือ SC (Sc.exe) ที่รวมอยู่ใน Resource Kit (มาพร้อมกับ Windows 7/8)

เปิดพร้อมท์คำสั่งแล้วป้อน

sc delete <service-name>

ตัวอย่างเครื่องมือช่วยดังนี้:

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

delete----------Deletes a service (from the registry).

วิธีที่ 2 - ใช้ delserv

ดาวน์โหลดและใช้ยูทิลิตีบรรทัดคำสั่ง delserv นี่เป็นเครื่องมือดั้งเดิมที่พัฒนาขึ้นสำหรับ Windows 2000 ในกล่อง Window XP ปัจจุบันถูกแทนที่โดย sc ตามที่อธิบายไว้ในวิธีที่ 1

วิธีที่ 3 - ลบรายการรีจิสตรีด้วยตนเอง(โปรดทราบว่าไฟแบ็คไฟร์ใน Windows 7/8)

บริการ Windows ได้รับการลงทะเบียนภายใต้คีย์รีจิสทรีต่อไปนี้

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

ค้นหาคีย์ย่อยด้วยชื่อบริการภายใต้คีย์อ้างอิงและลบออก (และคุณอาจต้องรีสตาร์ทเพื่อลบบริการทั้งหมดออกจากรายการบริการ)


23
วิธีที่ 3 ดูเหมือนว่าจะติดไฟบน Windows 7
rmiesen

29
ที่วิธีที่ 1 คุณอาจพบข้อผิดพลาด "บริการที่ระบุไม่มีบริการติดตั้ง" แม้ว่าคุณจะเห็นบริการที่ MMC !!! นี่เป็นเพราะชื่อที่คุณเห็นคือ DisplayName คุณอาจค้นหาชื่อบริการที่เกิดขึ้นจริงที่ต้นไม้ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services และผ่านที่เป็นบริการชื่อ
denispyr

9
วิธีที่ 3 ส่งผลให้ฉันด้วยบน Windows 7 บริการมีตอนนี้พร้อมคำอธิบาย<Failed to Read Description. Error Code: 2>
Zugwalt

27
โปรดระวังถ้าคุณใช้ powershell กับ sc - มันจะแทนที่แอพพลิเคชั่นที่มีชุดเนื้อหา cmdlet และถ้าคุณเรียกใช้ sc ลบ blah มันจะล้มเหลวอย่างเงียบ ๆ
JonnyRaa

10
หมายเหตุ: คุณต้องรีสตาร์ทคอมพิวเตอร์หลังจากทำตามวิธีที่ 3! จากนั้นดูรายการบริการ มันอาจหายไปแล้ว หากยังอยู่ในรายการให้ทำวิธีที่ 1 เพื่อลบออกจากรายการนั้น
East of Nowhere

170

จากพรอมต์คำสั่งใช้โปรแกรมอรรถประโยชน์ "sc.exe" ของ Windows คุณจะใช้สิ่งนี้:

sc delete <service-name>

21
หากมีช่องว่างในชื่อบริการให้ล้อมรอบด้วยเครื่องหมายคำพูดคู่
geoffc

2
ทำไมฉันถึงได้รับ [SC] OpenService ล้มเหลว 5: การเข้าถึงถูกปฏิเสธ
Adrian Enriquez

10
@AdrianEnriquez กำลังเรียกใช้ cmd.exe เป็นผู้ดูแลระบบได้แก้ไขปัญหานี้ให้ฉัน
foldlettuce

3
ใน windows 8 หลังจากใช้คำสั่งบริการจะปรากฏพร้อมสถานะปิดใช้งานในรายการ MMC การรีสตาร์ทจะกำจัดบริการจากรายการ
Ryan

มีวิธียกระดับสิทธิ์สำหรับสิ่งนี้หรือไม่? ฉันยังได้รับ "การเข้าถึงถูกปฏิเสธ" หลังจากพิมพ์คำสั่งด้านบน
Nick

27

หมายเหตุเกี่ยวกับการใช้ "sc delete" ใน Windows 8:

1) เปิดหน้าต่าง CMD ด้วยสิทธิ์ยกระดับ [Windows Key-X เพื่อเปิดเมนูพร้อมตัวเลือก; เลือก "Command Prompt (Admin)".]
2) ใช้ชื่อ parenthetical จากรายการใน Services [ตัวอย่างเช่นฉันใช้ "sc delete gupdate" เมื่อใน Services จะอ่านว่า "Google Update (gupdate)"]


21

บางคนพูดถึงsc deleteว่าเป็นคำตอบ นี่คือวิธีที่ฉันทำ แต่ใช้เวลาสักครู่เพื่อค้นหา<service-name>พารามิเตอร์

คำสั่งsc query type= service(หมายเหตุเป็นอย่างยิ่งกับการจัดรูปแบบพื้นที่ก่อน "บริการ" เป็นสิ่งที่จำเป็น) จะแสดงรายการของบริการ Windows ที่ติดตั้งพร้อมด้วยชื่อที่มีคุณสมบัติเพื่อใช้กับsc delete <service-name>คำสั่ง

รายการค่อนข้างยาวดังนั้นคุณอาจพิจารณาไพพ์เอาต์พุตกับไฟล์ข้อความ (เช่น>> C:\test.txt) จากนั้นค้นหาผ่าน

นี่SERVICE_NAMEคือหนึ่งที่จะใช้กับsc delete <service-name>คำสั่ง


2
ดูความคิดเห็นของฉันเกี่ยวกับคำตอบที่ยอมรับได้ สามารถกำหนดชื่อบริการได้อย่างรวดเร็วโดยดูที่แผ่นคุณสมบัติสำหรับบริการในแผงบริการ
donperk

2
นั่นไม่จำเป็นทั้งหมด: หากพวกเขาแสดงในรายการบริการคุณสามารถเปิดคุณสมบัติของบริการที่คุณต้องการลบออกจากรายการบริการในรายการบริการและจะแสดงชื่อบริการ "ชื่อบริการ" ที่ระบุไว้ในคุณสมบัตินั้นมีชื่อบริการเหมือนกันเช่นกัน :)
neminem

2
ใช่ฉันรู้ว่าคุณสามารถเข้าถึงชื่อด้วยวิธีอื่น ฉันเพิ่มสิ่งนี้เพราะฉันมีปัญหาในการหาชื่อที่จะใช้ในคำสั่ง ฉันเห็นชื่อที่แสดงในคุณสมบัติของบริการ แต่ฉันไม่รู้ว่าเป็นชื่อที่ใช้ในคำสั่งเมื่อใด การใช้บรรทัดคำสั่งเป็นวิธีที่ดีในการทิ้งบริการที่ติดตั้งไว้ทั้งหมดรวมถึง <service_name> เพื่อใช้ในการลบ ฉันมีบริการสองสามอย่างที่ต้องการสิ่งนี้ดังนั้นมันง่ายกว่าสำหรับฉันที่จะถ่ายโอนรายชื่อทั้งหมดไปยังไฟล์ดังนั้นฉันสามารถไปหาพวกเขาได้โดยไม่ต้องค้นหาในบริการสแน็ปอิน
Robin French

คุณก็สามารถเรียกใช้เป็นค่าเริ่มต้นให้sc query type= service
Ian Kemp

11

ลบ Windows Service ผ่าน Registry

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

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

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

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

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

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

sc ลบ

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

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

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


9

หากคุณต้องการใช้เครื่องมือสำหรับมันคุณสามารถใช้Process Hacker

แบบฟอร์มการสร้างบริการ:

แฮ็กเกอร์กระบวนการสร้างบริการ

เมนูบริบทบนบริการที่จะลบ:

กระบวนการแฮ็กเกอร์ลบบริการ

ฉันพบ Process Hacker เป็นเครื่องมือที่สะดวกกว่าในการจัดการกระบวนการและบริการของ Windows มากกว่า Taskmgr.exe ของ Windows โดยเฉพาะอย่างยิ่งใน Windows XP ซึ่งคุณไม่สามารถเข้าถึงบริการได้จากตัวจัดการงาน


4

ฉันต้องการติดตั้งบริการ Tomcat ใหม่ซึ่งหมายถึงการลบออกก่อน สิ่งนี้ใช้ได้กับฉัน:

Start a command prompt window using run as administrator

sc query type= service >t.txt

(แก้ไขไฟล์ t.txt ค้นหาในรายการและค้นหาบริการ tomcat ชื่อ Tomcat7)

sc delete Tomcat7

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


หากคุณต้องการดูบริการที่หยุดให้ใช้stateพารามิเตอร์
Harry Johnston

3

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


3

คุณสามารถลองใช้Autorunsซึ่งจะช่วยให้คุณประหยัดจากที่มีการแก้ไขรีจิสทรีด้วยมือ สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อคุณไม่มีสิทธิ์ที่จำเป็น


0

ขั้นตอนที่ 1: ย้ายไปยังไดเรกทอรีที่มีบริการของคุณ

คำสั่ง: cd c: \ xxx \ yyy \ service

ขั้นตอนที่ 2: ป้อนคำสั่งด้านล่าง

คำสั่ง: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe service.exe \ u

service.exe นี่คือบริการของคุณ exe และ \ u จะถอนการติดตั้งบริการ คุณจะเห็นข้อความ "การถอนการติดตั้งเสร็จสมบูรณ์"

หากคุณต้องการติดตั้งบริการลบ \ u ในคำสั่งด้านบนซึ่งจะติดตั้งบริการของคุณ


3
OP ชัดเจนกล่าวว่าไฟล์ต้นฉบับถูกลบไปแล้ว
หยุด

0

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

หมายเหตุ: ShipmunkService ยังคงปรากฏขึ้นหลังจาก sc_delete!

จากนั้นคุณสามารถติดตั้งใหม่และบริการของคุณจะทำงานอย่างถูกต้อง ขอให้โชคดีกับคุณทุกคนและพลังนี้อาจจะอยู่กับคุณ


0

คุณสามารถถอนการติดตั้งบริการ windows ของคุณโดยการรับคำสั่งเพียงแค่เขียนคำสั่งนี้

cd\                                                                   

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319(or version in which you developed your service)                                           

installutil c:\\xxx.exe(physical path of your service) -d

0

-Windows+r เปิด cmd

-sc YourSeviceName รหัสนี้ลบบริการของคุณ

-Uninstal "YourService Path" รหัสนี้ถอนการติดตั้งบริการของคุณ

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