Saya mencoba menghapus Layanan Windows dengan sc delete <service name>
, dan menemukan kesalahan berikut:
[SC] DeleteService GAGAL 1072:
Layanan yang ditentukan telah ditandai untuk dihapus.
Apa yang sudah saya lakukan:
Berhenti layanan, jelas. Ini
sc queryex "<service name>"
memberikan hasil sebagai berikut:SERVICE_NAME: Stub service TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED WIN32_EXIT_CODE : 1067 (0x42b) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 0 FLAGS :
Memastikan bahwa Konsol Manajemen Microsoft ditutup (
taskkill /F /IM mmc.exe
),-
Karena penghapusan ini,
services.msc
masih menunjukkan layanan (dengan nama, tetapi tidak ada status atau jenis startup), tetapi deskripsinya adalah "<Gagal Membaca Deskripsi. Kode Kesalahan: 2> ”. Ketika mencoba untuk melihat properti, "Sistem tidak dapat menemukan file yang ditentukan." ditampilkan lima kali.
Masalahnya masih ada.
Apa langkah selanjutnya?
windows-services
Arseni Mourzenko
sumber
sumber
Jawaban:
Mungkin ada beberapa penyebab yang menyebabkan layanan macet di "ditandai untuk dihapus".
Explorer Proses SysInternals dibuka . Menutupnya harus mengarah pada penghapusan layanan secara otomatis.
Pengelola Tugas dibuka .
Microsoft Management Console (MMC) dibuka . Untuk memastikan semua instance ditutup, jalankan
taskkill /F /IM mmc.exe
.Konsol layanan dibuka . Ini sama dengan poin sebelumnya, karena konsol Layanan di-host oleh MMC.
Peraga Peristiwa dibuka . Sekali lagi, ini sama dengan poin ketiga.
Kunci HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ {service name} ada .
Orang lain masuk ke server dan membuka salah satu aplikasi yang disebutkan sebelumnya.
Sebuah instance dari Visual Studio yang digunakan untuk debug layanan terbuka.
sumber
Ini juga dapat disebabkan oleh membiarkan konsol Layanan terbuka. Windows tidak akan benar-benar menghapus layanan sampai ditutup.
sumber
Saya memiliki masalah yang sama, akhirnya saya memutuskan untuk menghentikan proses layanan.
untuk itu coba langkah-langkah di bawah ini:
dapatkan proses id layanan dengan
sc queryex <service name>
bunuh proses dengan
taskkill /F /PID <Service PID>
sumber
Dalam kasus saya ini berhasil setelah menutup
Services
. Periksa apakahServices.msc
ini terbuka, jika ya tutup dan periksa semua proses layanan ditemukanTask Manager
.sumber
Itu berarti layanan masih terdaftar sebagai dinonaktifkan di services.msc. Tutup saja services.msc dan buka kembali sebagai administrator ... Layanan tidak akan terdaftar. Sekarang, instal layanan menggunakan perintah,
installutil "jalur layanan"
sumber
Menghapus kunci registri seperti yang disarankan di atas membuat layanan saya macet dalam status berhenti. Prosedur berikut ini berhasil untuk saya:
buka task manager> pilih tab layanan> pilih layanan> klik kanan dan pilih "pergi ke proses"> klik kanan pada proses dan pilih Akhiri proses
Layanan harus hilang setelah itu
sumber
Ditemukan satu hal lagi untuk diperiksa - lihat di Task manager - jika pengguna lain terhubung ke kotak ini, bahkan jika mereka 'terputus' Anda harus benar-benar keluar untuk mendapatkan layanan yang akhirnya dihapus.
sumber
Tampaknya pada versi Windows lebih lama dari Windows 7 (tidak diverifikasi, tetapi berdasarkan pengalaman terbaru dengan Windows Server 2012 R2), Service Control Manager (SCM) lebih ketat.
Sementara di Windows 7 hanya memunculkan proses lain, sekarang memeriksa apakah proses layanan masih ada dan dapat mengembalikan ERROR_SERVICE_MARKED_FOR_DELETE (1072) untuk panggilan selanjutnya ke CreateService / DeleteService bahkan jika layanan tampaknya dihentikan.
Saya berbicara kode Windows API di sini, tetapi saya ingin menguraikan dengan jelas apa yang terjadi, jadi urutan ini dapat menyebabkan kesalahan yang disebutkan:
Alasan proses layanan masih ada setelah sudah melaporkan status SERVICE_STOPPEDnya tidak mengejutkan. Ini adalah proses reguler, yang utas utamanya 'macet' dalam panggilannya ke
StartServiceCtrlDispatcher
API, jadi ia pertama-tama bereaksi terhadap tindakan pengendalian berhenti, tetapi kemudian harus menjalankan urutan kode yang tersisa.Sangat disayangkan SCM / OS tidak menangani ini dengan baik untuk kita. Solusi terprogram agak sederhana dan akurat: dapatkan pegangan proses yang dapat dieksekusi layanan sebelum menghentikan layanan, kemudian tunggu hingga gagang ini diberi sinyal.
Jika mendekati masalah dari perspektif administrasi sistem solusinya adalah juga menunggu proses layanan menghilang sepenuhnya.
sumber
Inilah yang bekerja untuk saya: - Saya mengalami masalah yang sama: layanan saya macet di 'ditandai untuk dihapus'. - Saya membuka services.msc Layanan saya memang terlihat berjalan, meskipun sudah dihapus. - Saya mengklik Berhenti Menerima pesan kesalahan, mengatakan layanan tidak dalam keadaan menerima pesan kontrol. Namun demikian, layanan itu dihentikan. - Tutup service.msc. - Layanan yang dibuka kembali.msc. - Layanan hilang (tidak lagi ditampilkan dalam daftar layanan).
(Lingkungan adalah Windows 7.)
sumber
Dalam kasus saya, saya mengeksekusi
taskkill /f /im dongleserver.exe
, di manadongleserver.exe
file exe program saya.Maka saya sudah bisa menginstal ulang program saya.
sumber
Dalam kasus saya, itu disebabkan oleh pengecualian yang tidak ditangani saat membuat sumber eventLog. Gunakan coba tangkap untuk menunjukkan titik penyebabnya.
sumber
Menutup setiap jendela yang saat ini terbuka diikuti dengan menjalankan perintah berikut memecahkan masalah bagi saya:
sumber
Menutup konsol layanan seperti yang disarankan oleh beberapa jawaban di sini memungkinkan saya untuk menghapus layanan. Dalam skenario saya ini hanya perbaikan jangka pendek karena semua menginstal ulang dan menghapus layanan selanjutnya akan mengharuskan saya untuk mengambil langkah-langkah tambahan ini. Meninjau file web.config saya, ditemukan bahwa ada kesalahan yang pernah diperbaiki, memungkinkan saya untuk dengan mudah menghapus layanan tanpa tambahan langkah konsol layanan.
sumber
Ini bekerja untuk saya.
Pohon proses akhir akan mengakhiri proses dan semua proses yang dibuat oleh proses.
Kemudian, Anda dapat menginstal ulang layanan.
sumber
Dalam kasus saya, nama layanannya adalah 'Monitor' yang juga digunakan oleh layanan windows yang disebut 'Monitor', ketika saya mencoba memperbarui layanan saya, saya mencoba mencopotnya, installer mencoba menghapus layanan windows 'Monitor' yang tidak bisa, dan instalasi selalu dibatalkan.
Saya akhirnya mengganti nama layanan saya ke sesuatu yang lain
sumber
Jika langkah-langkah yang diberikan oleh @MainMa tidak berhasil ikuti langkah-langkah berikut
Langkah 1 Cobalah mematikan proses dari windows task manager atau menggunakan taskkill / F / PID. Anda dapat menemukan pid dari proses dengan perintah 'sc queryex'. Coba langkah berikutnya jika Anda masih tidak dapat menghapus.
Langkah 2 Jika di atas
Jalankan Autoruns untuk Windows, Cari layanan berdasarkan nama dan hapus hasil.
sumber
Alasan utama untuk kesalahan adalah proses tidak berhenti. untuk menyelesaikannya, mulailah manajer tugas pergi ke layanan dan lihat apakah Anda masih dapat melihat layanan Anda daripada pergi ke proses layanan itu dan proses akhir. Daripada masalah akan diselesaikan sepenuhnya.
sumber
Saya mengalami masalah ini ketika saya menggunakan Application Verifier untuk memverifikasi layanan win saya. Bahkan setelah saya menutup App Ver, layanan saya diblokir dari penghapusan. Hanya menghapus layanan dari App Ver yang menyelesaikan masalah dan layanan segera dihapus. Sepertinya beberapa proses masih menggunakan layanan Anda setelah Anda mencoba menghapusnya.
sumber
langkah-langkah yang harus diikuti:
langkah-1 kebagian lokasi C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
langkah-2 jalankan perintah: installutil / u full-path / servicename.exe
langkah-3 tutup panel layanan dan buka kembali
langkah-4 jalankan perintah: installutil full-path / servicename.exe
sumber
Kemungkinan besar menghapus layanan gagal karena
melempar kesalahan saat menghentikan layanan. membungkus barang-barang di dalam try catch akan mencegah tanda kesalahan penghapusan
}
sumber
Kadang-kadang ini bisa terjadi selama penghapusan layanan melalui skrip sesi jarak jauh PowerShell, terutama ketika Anda mencoba untuk menghapus layanan beberapa kali. Dalam hal ini, cobalah untuk membuat ulang sesi sebelum penghapusan:
sumber