Bagaimana cara menghapus layanan Windows jika file tidak ada lagi?

570

Bagaimana cara menghapus layanan .NET Windows, jika file layanan tidak ada lagi?

Saya menginstal .NET Windows Service menggunakan InstallUtil. Sejak itu saya menghapus file tetapi lupa untuk menjalankan

 InstallUtil /u

pertama. Jadi layanan ini masih tercantum dalam Layanan MMC.

Apakah saya harus masuk ke dalam registri? Atau ada cara yang lebih baik?

Thomas Jespersen
sumber
3
Delserv
Tom Kidd
2
Apakah Anda juga menghentikan layanan terlebih dahulu? (-> net stop yourservice)
Jos
Utas yang sangat erat terkait di sini .
RBT
situs ini membantu saya dan saya harap akan membantu Anda dalam masalah ini howtogeek.com/howto/windows-vista/…
Ahmed Elbendary

Jawaban:

1130

Anda memiliki setidaknya tiga opsi. Saya telah mempresentasikannya berdasarkan preferensi penggunaan.

Metode 1 - Anda dapat menggunakan alat SC (Sc.exe) yang termasuk dalam Resource Kit. (disertakan dengan Windows 7/8)

Buka Command Prompt dan masukkan

sc delete <service-name>

Cuplikan bantuan alat berikut:

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

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

Metode 2 - gunakan delserv

Unduh dan gunakan utilitas baris perintah delserv. Ini adalah alat warisan yang dikembangkan untuk Windows 2000. Dalam kotak Window XP saat ini, ini digantikan oleh sc yang dijelaskan dalam metode 1.

Metode 3 - menghapus entri registri secara manual (Perhatikan bahwa ini menjadi bumerang di Windows 7/8)

Layanan Windows terdaftar di bawah kunci registri berikut.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Cari sub-kunci dengan nama layanan di bawah kunci yang dimaksud dan hapus. (dan Anda mungkin perlu memulai ulang untuk menghapus sepenuhnya layanan dari daftar Layanan)

Jorge Ferreira
sumber
23
Metode 3 tampaknya menyala kembali pada Windows 7.
rmiesen
29
Pada metode 1, Anda mungkin mengalami kesalahan "Layanan yang ditentukan tidak ada sebagai layanan yang diinstal", meskipun Anda melihat layanan di MMC !!! Ini karena nama yang Anda lihat adalah DisplayName. Anda dapat lookup nama layanan yang sebenarnya di HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services pohon dan lulus bahwa layanan-nama.
denispyr
9
Metode 3 menjadi bumerang bagi saya juga di Windows 7. Layanan ada di sana sekarang dengan Deskripsi<Failed to Read Description. Error Code: 2>
Zugwalt
27
perhatikan hati-hati jika Anda menggunakan PowerShell dengan sc - itu menimpa aplikasi dengan set-content cmdlet dan jika Anda menjalankan sc delete bla itu diam-diam gagal
JonnyRaa
10
CATATAN: Anda harus me-restart komputer Anda setelah melakukan Metode 3! Kemudian lihat daftar Layanan; mungkin sudah hilang sekarang. Jika masih ada dalam daftar, maka cukup lakukan Metode 1 untuk menghapusnya dari daftar itu.
East of Nowhere
170

Dari prompt perintah, gunakan utilitas Windows "sc.exe". Anda akan menjalankan sesuatu seperti ini:

sc delete <service-name>
Dean Hill
sumber
21
Jika ada spasi dalam nama layanan, masukkan dalam tanda kutip ganda.
geoffc
2
Mengapa saya mendapatkan [SC] OpenService Gagal 5: Akses Ditolak.
Adrian Enriquez
11
@AdrianEnriquez, menjalankan cmd.exe ketika admin memperbaiki ini untuk saya.
foldinglettuce
3
Di windows 8 setelah menggunakan perintah, layanan muncul dengan status dinonaktifkan di daftar MMC. Restart akan menghilangkan layanan dari daftar.
Ryan
1
Apakah ada cara untuk meningkatkan hak istimewa untuk ini? Saya masih mendapatkan "Akses ditolak" setelah mengetik perintah di atas
Nick
27

Catatan tentang penggunaan "hapus sc" di Windows 8:

1) Buka jendela CMD dengan hak yang lebih tinggi. [Windows Key-X untuk memunculkan menu dengan opsi; pilih "Command Prompt (Admin)".]
2) Gunakan nama kurung dari daftar di Services [misalnya, saya menggunakan "sc delete gupdate" ketika, di Services, ia membaca "Google Update (gupdate)"]

Michael
sumber
22

Beberapa orang menyebut sc deletesebagai jawaban. Ini adalah bagaimana saya melakukannya, tetapi butuh beberapa saat untuk menemukan <service-name>parameter.

Perintah sc query type= service(perhatikan, ini sangat khusus dengan pemformatan, ruang sebelum "layanan" diperlukan) akan menampilkan daftar layanan Windows yang diinstal, lengkap dengan nama mereka yang memenuhi syarat untuk digunakan dengan sc delete <service-name>perintah.

Daftarnya cukup panjang sehingga Anda dapat mempertimbangkan untuk memipipkan output ke file teks (yaitu >> C:\test.txt) dan kemudian mencari melalui itu.

The SERVICE_NAMEadalah salah satu untuk digunakan dengan sc delete <service-name>perintah.

Robin Prancis
sumber
2
Lihat komentar saya pada jawaban yang diterima. Nama layanan dapat ditentukan dengan cepat dengan melihat lembar Properties untuk layanan di panel Layanan.
donperk
2
Itu sama sekali tidak perlu: jika mereka muncul di daftar layanan, Anda bisa membuka properti layanan yang ingin Anda hapus dari daftar layanan, dalam daftar layanan, dan itu akan menunjukkan kepada Anda nama layanan. "Nama layanan" yang tercantum di properti juga ada nama layanan yang sama. :)
neminem
2
Ya saya tahu Anda bisa mendapatkan nama dengan cara lain. Saya menambahkan ini karena saya kesulitan mencari tahu nama mana yang akan digunakan dalam perintah. Saya telah melihat nama yang tercantum di properti layanan, tetapi saya tidak tahu pada saat itu nama yang digunakan dalam perintah. Menggunakan baris perintah adalah cara yang baik bagi saya untuk membuang semua layanan yang diinstal, termasuk <service_name> yang akan digunakan untuk menghapus. Saya punya beberapa layanan yang membutuhkan ini sehingga lebih mudah bagi saya untuk membuang seluruh daftar ke file sehingga saya bisa mendapatkan mereka tanpa harus mencarinya di snap-in layanan.
Robin French
Anda bisa menjalankannya sc querysesuai default type= service.
Ian Kemp
11

Hapus Layanan Windows melalui Registry

Sangat mudah untuk menghapus layanan dari registri jika Anda tahu jalan yang benar. Inilah cara saya melakukan itu:

  1. Jalankan Regedit atau Regedt32

  2. Buka entri registri "HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services"

  3. Cari layanan yang ingin Anda hapus dan hapus. Anda dapat melihat tombol untuk mengetahui file apa yang digunakan layanan dan menghapusnya juga (jika perlu).

Hapus Layanan Windows melalui Jendela Perintah

Atau, Anda juga dapat menggunakan prompt perintah dan menghapus layanan menggunakan perintah berikut:

hapus sc

Anda juga dapat membuat layanan dengan menggunakan perintah berikut

sc buat "MorganTechService" binpath = "C: \ Program Files \ MorganTechSPace \ myservice.exe"

Catatan: Anda mungkin harus me-reboot sistem untuk mendapatkan daftar yang diperbarui di manajer layanan.

kombsh
sumber
9

Jika Anda ingin menggunakan alat untuk itu, Anda bisa menggunakan Process Hacker

Formulir untuk membuat layanan:

Hacker Proses, Buat Layanan

Menu konteks pada layanan untuk menghapusnya:

Hapus Layanan Hacker Proses

Saya menemukan Process Hacker alat yang lebih nyaman untuk mengelola proses dan layanan Windows daripada Taskmgr.exe Windows sendiri. Terutama pada Windows XP, di mana Anda tidak dapat mengakses layanan sama sekali dari task manager.

Mike de Klerk
sumber
4

Saya perlu menginstal ulang layanan kucing jantan saya, yang berarti menghapusnya terlebih dahulu. Ini bekerja untuk saya:

Start a command prompt window using run as administrator

sc query type= service >t.txt

(edit file t.txt, cari melalui daftar dan temukan layanan tomcat. Ini disebut Tomcat7)

sc delete Tomcat7

NAMUN, perintah kueri tidak berfungsi pertama kali, karena layanan kucing jantan tidak berjalan. Tampaknya hanya daftar layanan yang berjalan. Saya harus memulai layanan dan menjalankan perintah kueri lagi.

pengguna1208639
sumber
Jika Anda ingin melihat layanan yang dihentikan, gunakan stateparameter.
Harry Johnston
3

Jika Layanan asli .InstallLog dan .InstallState file masih ada di folder, Anda dapat mencoba menginstal ulang yang dapat dieksekusi untuk mengganti file, kemudian gunakan InstallUtil / u, kemudian hapus instalan program. Ini agak berbelit-belit, tetapi bekerja dalam contoh khusus untuk saya.

ja928
sumber
3

Anda dapat mencoba menjalankan Autoruns , yang akan menyelamatkan Anda dari keharusan mengedit registri dengan tangan. Ini sangat berguna ketika Anda tidak memiliki izin yang diperlukan.

Berjemur
sumber
0

Langkah 1: Pindah ke Direktori tempat layanan Anda berada

Perintah: cd c: \ xxx \ yyy \ service

Langkah 2: Masukkan perintah di bawah ini

Perintah: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe service.exe \ u

Di sini service.exe adalah exe layanan Anda dan \ u akan mencopot pemasangan layanan. Anda akan melihat pesan "Penghapusan instalasi telah selesai".

Jika Anda ingin menginstal layanan, Hapus \ u pada perintah di atas yang akan menginstal layanan Anda

Sree
sumber
3
OP dengan jelas mengatakan bahwa file asli telah dihapus.
AFract
0

Kami menemukan bahwa bahkan jika Anda menjalankan sc_delete, masih ada entri yang tersisa di registri untuk layanan Anda, sehingga menginstal ulang layanan menghasilkan kumpulan entri registri yang rusak (mereka tidak cocok). Apa yang kami lakukan adalah regeditmenghapus entri sisa ini dengan tangan.

Catatan: ShipmunkService masih muncul setelah sc_delete!

Kemudian Anda dapat menginstal ulang, dan layanan Anda akan berjalan dengan benar. Semoga beruntung untuk Anda semua, dan mungkin kekuatannya menyertai Anda.

barclay
sumber
0

Anda dapat menghapus layanan windows Anda dengan command prompt juga hanya menulis bagian ini dari perintah

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
Amarjit Singh Chaudhary
sumber
0

-Windows+r buka cmd.

-sc YourSeviceName kode ini menghapus layanan Anda.

-Uninstal "YourService Path" kode ini copot pemasangan layanan Anda.

Ayse Özbek
sumber