Sistemde bir yürütülebilir dosya olmadığında bir Windows Hizmeti nasıl kaldırılır?


166

Sistemde bir yürütülebilir dosya olmadığında bir Windows Hizmetini nasıl kaldırabilirim? Çalıştırılamaz installutil -uçünkü sistemde yürütülebilir dosya kalmadı. Hizmet konsolunda hizmet için bir giriş görmeye devam ediyorum.

Bu durumun nedeni büyük olasılıkla hizmeti düzgün kaldırmayan msi paketindeki bir sorundan kaynaklanır, ancak hizmet bu durumda olduğunda nasıl düzeltebilirim?


Yanıtlar:


325

Bir "yönetici" komut isteminde aşağıdakileri çalıştırarak sc.exe (Windows Kaynak Seti'ne dahil olduğunu düşünüyorum) kullanarak kaldırabilirsiniz:

sc.exe delete <service name>

<service name>exe değil, hizmet yönetimi konsolunda gördüğünüz gibi hizmetin kendisi nerede .

Sc.exe dosyasını Sistem klasöründe bulabilirsiniz ve çalıştırmak için Yönetici ayrıcalıkları gerekir. Bu Microsoft KB makalesinde daha fazla bilgi .

Alternatif olarak, doğrudan DeleteService () api'yi çağırabilirsiniz . Bu şekilde biraz daha karmaşıktır, çünkü OpenSCManager () ve benzerleri aracılığıyla servis kontrol yöneticisine sahip olmanız gerekir , ancak diğer taraftan, neler olduğu konusunda size daha fazla kontrol sağlar.


Tam olarak ne istediğini yaptı ve hizmet kayıt defterinden kaldırıldı. Artık Hizmetler konsolunda görünmüyor. Teşekkürler!
Magnus Lindhe

"Erişim reddedildi." Sonra ne yapacağız?
Nick

4
PowerShell: sc'de Yöntem 1'de komutu yürütmeye çalışanlar için sadece bir not, servis kontrol yöneticisiyle iletişim kurmak için değildir. Set-Content komutudur. Bunun yerine sc.exe'yi kullanın.
Yasser Sinjab

1
1072 hatası alırsanız, hizmet kontrol panelinin açık olmadığından emin olun ( bu diğer soruya bakın )
Giles

Aşağıdaki hatayı alıyordum. [SC] OpenService FAILED 1060: Belirtilen hizmet yüklü bir hizmet olarak yok. Daha sonra aynı güç kabuğu ile çalıştı ve işe yarıyor!
crazydan

24

Windows Hizmetini Kayıt Defteri aracılığıyla kaldırma

Doğru yolu biliyorsanız, kayıt defterinden bir hizmeti kaldırmak çok kolaydır. İşte bunu nasıl yaptım:

  1. Regedit veya Regedt32'yi çalıştırın

  2. "HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services" kayıt defteri girdisine gidin.

  3. Silmek istediğiniz hizmeti bulun ve silin. Hizmetin hangi dosyaları kullandığını öğrenmek için anahtarlara bakabilir ve bunları da silebilirsiniz (gerekirse).

Windows Hizmeti'ni Komut Penceresi'nden Silme

Alternatif olarak, komut istemini kullanabilir ve aşağıdaki komutu kullanarak bir hizmeti silebilirsiniz:

sc sil

Aşağıdaki komutu kullanarak da hizmet oluşturabilirsiniz

sc oluşturmak "MorganTechService" binpath = "C: \ Program Files \ MorganTechSPace \ myservice.exe"

Not: Listenin servis yöneticisinde güncellenmesi için sistemi yeniden başlatmanız gerekebilir.


3
Kayıt defteri yolu güvenli mi? Kayıt defterinin "nihai sonucu", "nihai sonucu" ile aynı sc deletemı?
Pacerier

5
Hayır, bir hizmeti doğrudan regedit'ten silmeyi denedim. Sonuç olarak, şimdi silmek istediğim hizmetin girişi Hizmet'te kalır, bunun açıklaması ise şu şekilde gösterilir: "<Açıklama Okunamadı. Hata Kodu: 2>"
GJ.

11

burada bulundu

Sadece Windows XP'de denedim, işe yaradı

yerel bilgisayar: sc \\. [service-name] öğesini sil

  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

İşte bir hizmeti silmek için powershell betiği foo

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


3

Aynı hizmetin yürütülebilir dosyalarının bir kopyasını oluşturun ve mevcut hizmetin aynı yoluna yapıştırın ve kaldırın.


Bu iyi bir öneri. Bu işe yaramazsa yeniden yüklemesi, installutil -u komutunu çalıştırması ve ardından kaldırması
gerekebilir

aynı exe kopyasını oluşturmak zorunda mıyım yoksa başka bir dosyayı yeniden adlandırmak iyi çalışır?
Imran Rizvi

@Samiksha, " yürütülebilir bir kopyası " olmadığını söyledi mi?
Pacerier

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.