Làm cách nào để gỡ cài đặt dịch vụ Windows nếu các tệp không còn tồn tại?


570

Làm cách nào để gỡ cài đặt .NET Windows Service, nếu các tệp dịch vụ không còn tồn tại nữa?

Tôi đã cài đặt Dịch vụ Windows .NET bằng InstallUtil. Tôi đã xóa các tập tin nhưng quên chạy

 InstallUtil /u

Đầu tiên. Vì vậy, dịch vụ vẫn được liệt kê trong Dịch vụ MMC.

Tôi có phải đi vào sổ đăng ký không? đây có phải là cách tốt hơn không?



2
Bạn cũng đã dừng dịch vụ đầu tiên? (-> net dừng dịch vụ của bạn)
Jos

Một chủ đề rất liên quan ở đây .
RBT

Trang web này giúp tôi và tôi hy vọng sẽ giúp bạn trong vấn đề này howtogeek.com/howto/windows-vista/...
Ahmed Elbendary

Câu trả lời:


1130

Bạn có ít nhất ba lựa chọn. Tôi đã trình bày chúng theo thứ tự ưu tiên sử dụng.

Phương pháp 1 - Bạn có thể sử dụng công cụ SC (Sc.exe) có trong Bộ tài nguyên. (bao gồm Windows 7/8)

Mở một Dấu nhắc Lệnh và nhập

sc delete <service-name>

Công cụ trợ giúp đoạn trích sau:

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

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

Phương pháp 2 - sử dụng delserv

Tải về và sử dụng tiện ích dòng lệnh delserv. Đây là một công cụ kế thừa được phát triển cho Windows 2000. Trong các hộp Window XP hiện tại, nó được thay thế bởi sc được mô tả trong phương thức 1.

Phương pháp 3 - xóa thủ công các mục đăng ký (Lưu ý rằng điều này phản tác dụng trong Windows 7/8)

Các dịch vụ Windows được đăng ký theo khoá đăng ký sau.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Tìm kiếm khóa phụ với tên dịch vụ bên dưới khóa được giới thiệu và xóa nó. (và bạn có thể cần phải khởi động lại để xóa hoàn toàn dịch vụ khỏi danh sách Dịch vụ)


23
Phương pháp 3 dường như hoạt động trở lại trên Windows 7.
rmiesen

29
Ở phương pháp 1, bạn có thể gặp lỗi "Dịch vụ được chỉ định không tồn tại dưới dạng dịch vụ đã cài đặt", mặc dù bạn thấy dịch vụ tại MMC !!! Điều này là do tên bạn nhìn thấy là DisplayName. Bạn có thể tra cứu tên dịch vụ thực tế tại cây HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services và vượt qua điều đó như tên dịch vụ.
denispyr

9
Phương pháp 3 đã phản tác dụng với tôi trên Windows 7. Hiện tại đã có Dịch vụ với Mô tả<Failed to Read Description. Error Code: 2>
Zugwalt

27
lưu ý cẩn thận nếu bạn đang sử dụng powershell với sc - nó sẽ ghi đè ứng dụng bằng lệnh ghép ngắn nội dung được thiết lập và nếu bạn chạy sc xóa blah thì nó sẽ âm thầm thất bại
JonnyRaa

10
LƯU Ý: Bạn phải khởi động lại máy tính của mình sau khi thực hiện Phương pháp 3! Sau đó nhìn vào danh sách Dịch vụ; có lẽ nó đã biến mất Nếu nó vẫn còn trong danh sách, thì chỉ cần thực hiện Phương pháp 1 để xóa nó khỏi danh sách đó.
Phía đông hư không

170

Từ dấu nhắc lệnh, sử dụng tiện ích "sc.exe" của Windows. Bạn sẽ chạy một cái gì đó như thế này:

sc delete <service-name>

21
Nếu có một khoảng trắng trong tên dịch vụ, hãy bao quanh nó trong dấu ngoặc kép.
geoffc

2
Tại sao tôi nhận được [SC] OpenService không thành công 5: Truy cập bị từ chối.
Adrian Enriquez

11
@AdrianEnriquez, chạy cmd.exe với tư cách quản trị viên đã sửa lỗi này cho tôi.
Foldinglettuce

3
Trong windows 8 sau khi sử dụng lệnh, dịch vụ sẽ xuất hiện với trạng thái bị tắt trong danh sách MMC. Khởi động lại sẽ loại bỏ dịch vụ khỏi danh sách.
Ryan

1
Có cách nào để nâng cao các đặc quyền cho việc này? Tôi vẫn nhận được "Quyền truy cập bị từ chối" sau khi nhập lệnh trên
Nick

27

Lưu ý khi sử dụng "sc xóa" trong Windows 8:

1) Mở một cửa sổ CMD với các đặc quyền nâng cao. [Windows Key-X để hiển thị menu với tùy chọn; chọn "Dấu nhắc lệnh (Quản trị viên)".]
2) Sử dụng tên phụ huynh từ danh sách trong Dịch vụ [ví dụ: tôi đã sử dụng "sc xóa gupdate" khi, trong Dịch vụ, nó đọc "Google Update (gupdate)"]


22

Một số người đề cập sc deletenhư một câu trả lời. Đây là cách tôi đã làm nó, nhưng tôi phải mất một thời gian để tìm <service-name>tham số.

Lệnh sc query type= service(lưu ý, rất đặc biệt với định dạng, khoảng trắng trước khi "dịch vụ" là cần thiết) sẽ xuất ra một danh sách các dịch vụ Windows được cài đặt, hoàn thành với tên đủ điều kiện của chúng sẽ được sử dụng với sc delete <service-name>lệnh.

Danh sách này khá dài, do đó bạn có thể xem xét đường ống đầu ra đến một tệp văn bản (nghĩa là >> C:\test.txt) và sau đó tìm kiếm thông qua đó.

Đây SERVICE_NAMElà một trong những để sử dụng với sc delete <service-name>lệnh.


2
Xem bình luận của tôi về câu trả lời được chấp nhận. Tên dịch vụ có thể được xác định nhanh chóng bằng cách xem bảng Thuộc tính cho dịch vụ trong bảng Dịch vụ.
donperk

2
Điều đó là hoàn toàn không cần thiết: nếu chúng hiển thị trong danh sách dịch vụ, bạn chỉ cần mở các thuộc tính của dịch vụ bạn muốn xóa khỏi danh sách dịch vụ, trong danh sách dịch vụ và nó sẽ hiển thị cho bạn tên dịch vụ. "Tên dịch vụ" được liệt kê trong các thuộc tính cũng có cùng tên dịch vụ. :)
neminem

2
Vâng tôi biết bạn có thể đến tên bằng cách khác. Tôi đã thêm điều này bởi vì tôi gặp khó khăn trong việc tìm ra tên nào được sử dụng trong lệnh. Tôi đã thấy tên được liệt kê trong thuộc tính dịch vụ, nhưng tôi không biết đó là tên được sử dụng trong lệnh. Sử dụng dòng lệnh là một cách tốt để tôi loại bỏ tất cả các dịch vụ đã cài đặt, bao gồm cả <service_name> để sử dụng để xóa. Tôi đã có một vài dịch vụ cần điều này để tôi dễ dàng chuyển toàn bộ danh sách ra để nộp để tôi có thể truy cập chúng mà không cần phải tra cứu trong dịch vụ đính kèm.
Robin Pháp

Bạn chỉ có thể chạy sc querykhi nó mặc định type= service.
Ian Kemp

11

Xóa dịch vụ Windows qua Registry

Rất dễ dàng để xóa một dịch vụ khỏi registry nếu bạn biết đúng đường dẫn. Đây là cách tôi đã làm điều đó:

  1. Chạy Regedit hoặc Regedt32

  2. Chuyển đến mục đăng ký "HKEY_LOCAL_MACHINE / HỆ THỐNG / CurrentControlset / Services"

  3. Hãy tìm dịch vụ mà bạn muốn xóa và xóa nó. Bạn có thể nhìn vào các phím để biết tập tin nào mà dịch vụ đang sử dụng và cũng xóa chúng (nếu cần).

Xóa dịch vụ Windows qua cửa sổ lệnh

Ngoài ra, bạn cũng có thể sử dụng dấu nhắc lệnh và xóa dịch vụ bằng lệnh sau:

sc xóa

Bạn cũng có thể tạo dịch vụ bằng cách sử dụng lệnh sau

sc tạo "MorganTechService" binpath = "C: \ Chương trình tập tin \ MorganTechSPace \ myservice.exe"

Lưu ý: Bạn có thể phải khởi động lại hệ thống để cập nhật danh sách trong trình quản lý dịch vụ.


9

Nếu bạn muốn sử dụng một công cụ cho nó, bạn có thể sử dụng Process Hacker

Mẫu để tạo dịch vụ:

Quá trình tạo dịch vụ Hacker

Trình đơn ngữ cảnh trên một dịch vụ để xóa nó:

Dịch vụ xóa Hacker

Tôi thấy Process Hacker là một công cụ tiện lợi hơn để quản lý các quy trình và dịch vụ của Windows so với TASkmgr.exe của Windows. Đặc biệt là trên Windows XP, nơi bạn không thể truy cập các dịch vụ từ trình quản lý tác vụ.


4

Tôi cần phải cài đặt lại dịch vụ tomcat của mình, điều đó có nghĩa là trước tiên phải gỡ bỏ nó. Điều này làm việc cho tôi:

Start a command prompt window using run as administrator

sc query type= service >t.txt

(chỉnh sửa tệp t.txt, tìm kiếm trong danh sách và tìm dịch vụ tomcat. Nó được gọi là Tomcat7)

sc delete Tomcat7

TUY NHIÊN, lệnh truy vấn không hoạt động lần đầu tiên, vì dịch vụ tomcat không chạy. Nó dường như chỉ liệt kê các dịch vụ đang chạy. Tôi đã phải bắt đầu dịch vụ và chạy lại lệnh truy vấn.


Nếu bạn muốn xem các dịch vụ đã dừng, hãy sử dụng statetham số.
Harry Johnston

3

Nếu các tệp Service .InstallLog và .InstallState ban đầu vẫn còn trong thư mục, bạn có thể thử cài đặt lại tệp thực thi để thay thế các tệp, sau đó sử dụng InstallUtil / u, sau đó gỡ cài đặt chương trình. Đó là một chút phức tạp, nhưng làm việc trong một trường hợp cụ thể đối với tôi.


3

Bạn có thể thử chạy Autorun , điều này sẽ giúp bạn không phải chỉnh sửa sổ đăng ký bằng tay. Điều này đặc biệt hữu ích khi bạn không có quyền cần thiết.


0

Bước 1: Di chuyển đến Thư mục nơi có dịch vụ của bạn

Lệnh: cd c: \ xxx \ yyy \ dịch vụ

Bước 2: Nhập lệnh dưới đây

Lệnh: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe service.exe \ u

Ở đây service.exe là exe dịch vụ của bạn và \ u sẽ gỡ cài đặt dịch vụ. bạn sẽ thấy thông báo "Việc gỡ cài đặt đã hoàn tất".

Nếu bạn muốn cài đặt một dịch vụ, hãy xóa \ u trong lệnh trên sẽ cài đặt dịch vụ của bạn


3
OP nói rõ rằng các tập tin gốc đã bị xóa.
Thu hút

0

Chúng tôi phát hiện ra rằng ngay cả khi bạn chạy sc_delete, vẫn có thể có một mục nhập trong sổ đăng ký cho dịch vụ của bạn, do đó việc cài đặt lại kết quả dịch vụ trong một tập hợp các mục đăng ký bị hỏng (chúng không khớp). Những gì chúng tôi đã làm là regeditvà loại bỏ mục còn sót lại này bằng tay.

Lưu ý: ShipmunkService vẫn hiển thị sau sc_delete!

Sau đó, bạn có thể cài đặt lại và dịch vụ của bạn sẽ chạy chính xác. Chúc may mắn cho tất cả các bạn, và có thể lực sẽ ở bên bạn.


0

Bạn có thể gỡ cài đặt dịch vụ windows của mình bằng dấu nhắc lệnh cũng chỉ cần viết đoạn lệnh này

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 mở cmd.

-sc YourSeviceName mã này loại bỏ dịch vụ của bạn.

-Uninstal "YourService Path" mã này gỡ cài đặt dịch vụ của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.