c # - Sletning af en tjeneste

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har oprettet et installationsprogram og tilpassede handlinger til en tjeneste.


Ved første installation klarte jeg at installere tjenesten, men da jeg forsøgte at køre tjenesten fik jeg
en fejl: Windows installer service kan ikke starte Fejl 193: 0xc2


Jeg har forsøgt at slette denne tjeneste på mange måder, men i installationen får jeg stadig en fejlmeddelelse 1001 Den angivne tjeneste eksisterer allerede.


Jeg har slettet tjenesten direkte fra registreringsdatabasen, men det ser ikke ud til at have fungeret.


Jeg har forsøgt
sc delete [[service]] -> Den angivne tjeneste eksisterer ikke som en installeret tjeneste.


Tjenesten vises ikke i registret, og den er heller ikke til stede i installerede tjenester.


Andre tanker eller muligheder vil blive værdsat

Bedste reference


Denne klage kan komme fra installationsprogrammet, ikke fra Windows.


Jeg havde det samme problem tidligere i år, jeg installerede en tjeneste fra en MSI-fil, der fouled et sted langs linjen. Jeg afinstallerede pakken og prøvede at geninstallere gennem installationsprogrammet og fik den samme besked som du gjorde, at tjenesten allerede eksisterede. Frustrerende. Det viste sig ikke som en installeret pakke overhovedet længere, og det viste sig heller ikke i servicelisten.


Det endte med, at MSI-filen ikke ryddet op efter sig selv korrekt under afinstallationen, men at jeg manuelt kunne manipulere denne database og fjerne oplysningerne selv ved hjælp af MSIZap.exe . Du skal bruge Windows SDK til at komme på dette program. Der kan være andre måder, men jeg ved ikke om dem. [6] [7]


Du skal bruge pakkevejledningen til din installationspakke for at fjerne den ved hjælp af MSIZap. I samme mappe som MsiZap.exe finder du en anden applikation, MsiDb.exe. Kør det, peg det på din MSI-fil, peg det på en tom mappe for at gemme nogle eksporter vælg tabellen 'Ejendom', vælg 'Eksporter' -knappen og tryk på 'OK' -knappen. Åbn filen 'Property.idk', der blev genereret af MsiDb.exe i ethvert tekstredigeringsprogram. Se i din tekst for en linje, der siger 'ProductCode'. GUID'en, der følger, er, hvad du vil føje til MsiZap, parenteser og alle. Nu vil du simpelthen (bwahaha ... ja rigtigt) indtaste:


msizap T {product code}


Hvor '{produktkode}' er erstattet af GUID du fandt. Dette fjerner alle spor af dit produkt fra MSI-databasen i Windows, som skal lukke installationsprogrammet op.


Jeg er klar over, at alt dette er en latterlig smerte i rumpen. Jeg forstår ikke, hvorfor det er en sådan prøve at finde en produktkode. Men jeg antager, at hvis afinstallatoren arbejdede, ville du ikke gøre sit job for det nu. Der kan virkelig være en enklere måde at gøre alt dette på, men jeg har ikke fundet en. Når jeg fandt noget, der fungerede, var jeg forbi det.


Som en sidste bemærkning var det, der forårsagede denne fejl for mig, at lade servicelisten være åben under afinstallationen. En uninstaller, der ikke er opmærksom, kunne ignorere nogle undtagelser og lade dele af sig selv ligge om. Jeg var heldig, den dårligt opførte uninstaller var min egen. Og forresten, at forstå, hvor meget affald der er tilbage fra afinstallation, check ud af denne artikel. [8]


Jeg er ikke sikker på, om jeg havde det samme problem, som du havde, men hvis det er tilfældet, håber jeg det hjælper. Hvis du har brug for afklaring, spørg og jeg vil opdatere svaret. Hvis jeg har et træ, og det har intet at gøre med dit problem, undskylder jeg.

Andre referencer 1


Jeg har brugt disse kommandoer i en flagermusfil, der kører hver gang geninstallere. Prøv dette og se.


set path=\%path\%;\%SystemRoot\%Microsoft.NETFrameworkvXXX

InstallUtil /u YourService.exe

InstallUtil /i YourService.exe

net start "Service name"


Hvis du vil slette/afinstallere/fjerne en Windows-tjeneste, måske fra en ufuldstændig installatør, kan du bruge kommandoen sc fra en administratorkontrolprompt:



  sc slet [[servicenavn]]



'sc delete' Sletter en servicesnøgle fra registreringsdatabasen. Hvis tjenesten kører, eller hvis en anden proces har et åbent håndtag til tjenesten, er tjenesten markeret til sletning. [9]


EDIT



  Jeg har forsøgt sc delete [[service]] Den angivne tjeneste eksisterer ikke
  som en installeret tjeneste.



Sandsynligvis genstart maskinen ville rette dette.

Andre referencer 2


sc.exe stop serviceName
sc.exe delete serviceName


og genstart din VM \ PC

Andre referencer 3


Prøv med Powershell og Wmi:


(gwmi win32\_service -filter "name='yourservicename'").delete()


Sørg for, at services.msc-vinduet er lukket. Nogle gange slår det op for at slette tjenesten. Jeg er ikke sikker på, om dette vil hjælpe, burde du ikke have rørt registreringsdatabasen!

Andre referencer 4


Måske forsøgte du at slette tjenesten, mens den kører? I så fald skal du muligvis genstarte for at rydde op.