Cách chạy dịch vụ hỗ trợ tệp exe. Cách chạy một ứng dụng dưới dạng dịch vụ Windows. Chuẩn bị tài khoản cho dịch vụ

Tài liệu này phản ánh bài viết trên trang web Ghi chú về WINDOWS với một số ghi chú từ kinh nghiệm cá nhân.

Đôi khi bạn có thể cần lấy một tệp thực thi và đăng ký nó dưới dạng dịch vụ Windows. Có nhiều hướng khác nhau để làm điều đó. Hai trong số đó được đưa ra dưới đây.

Bạn có thể sử dụng chương trình SC (Sc.exe) để tạo và phục vụ từ dòng lệnh. SC là một tiện ích dòng lệnh thực hiện các cuộc gọi tới tất cả các chức năng của giao diện lập trình ứng dụng quản lý dịch vụ (API) của Windows. Với sự trợ giúp của nó, bạn có thể thực hiện bất kỳ hành động nào với các dịch vụ - xem trạng thái, quản lý (bắt đầu, dừng, v.v.), thay đổi tham số cũng như tạo các dịch vụ mới.

Khi tạo một dịch vụ bằng SC, bạn không phải tạo các mục đăng ký theo cách thủ công rồi khởi động lại máy tính để cho phép Trình quản lý dịch vụ cập nhật cơ sở dữ liệu. SC cũng cho phép bạn chỉ định tên của máy tính từ xa, điều này giúp quản lý các dịch vụ trên cả máy tính cục bộ và máy tính từ xa.

Để tạo một dịch vụ mới, hãy chạy lệnh Sc create. Nó tạo ra một mục dịch vụ trong sổ đăng ký và trong cơ sở dữ liệu Trình quản lý dịch vụ. Sc create có cú pháp như sau:

sc tạo

ServiceName - chỉ định tên sẽ được gán cho phần dịch vụ trong sổ đăng ký. Lưu ý rằng tên này khác với tên hiển thị của dịch vụ (tên xuất hiện trong phần đính vào Dịch vụ);
binPath - chỉ định đường dẫn đến tệp thực thi dịch vụ.

Ví dụ: hãy tạo dịch vụ MyService, chỉ định tên hiển thị Dịch vụ mới của tôi, đặt loại dịch vụ và đặt thành tự động khởi động:

Sc tạo MyService binPath=C:\MyService\MyService.exe DisplayName="Dịch vụ mới của tôi" type=own start=auto

Sau đó mở phần đính kèm “Dịch vụ” và xem kết quả.

Bạn có thể thay đổi các tham số của dịch vụ đã được tạo bằng lệnh Sc config. Ví dụ: tôi không thích tên hiển thị của dịch vụ và tôi muốn thay đổi nó:

Sc config MyService DisplayName="Dịch vụ của tôi"

Chà, bạn hoàn toàn có thể xóa dịch vụ như thế này:

Sc xóa MyService


Ghi chú. Có một số tính năng của việc sử dụng tiện ích sc. Ví dụ: khi tạo một dịch vụ trong Windows XP, bạn phải đặt một khoảng trắng trước đối số được truyền cho tham số!

Nếu chúng ta ra lệnh:

C:\sc tạo Weblogic binPath=C:\Oracle\MiddleWare\user_projects\base_domain\startWeblogic.cmd DisplayName="WebLogic" type=share start=auto error=ignore

Để đáp lại, chúng tôi sẽ nhận được trợ giúp về cách sử dụng sc mà không có bất kỳ thông báo lỗi nào:


Chúng tôi đưa ra lệnh tương tự bằng cách chèn dấu cách sau ký hiệu "=":

C:\>sc tạo Weblogic binPath= C:\Oracle\MiddleWare\user_projects\base_domain\startWeblogic.cmd DisplayName= "WebLogic" type= chia sẻ bắt đầu= lỗi tự động= bỏ qua

CreateService THÀNH CÔNG

Đây là một tính năng không có giấy tờ.

Cũng cần phải chú ý đến các thông số khác. Trong trường hợp bên dưới, giá trị của tham số bắt đầu và loại đã được thay đổi:

Chúng tôi nhận được một tin nhắn

CreateService THẤT BẠI 87:

và sau dấu hai chấm không có lời giải thích.

Ý nghĩa chi tiết của các thông số có thể xem hoặc.

Để thay đổi tham số của dịch vụ hệ thống, bạn cần nhập tham số mới bằng lệnh:

# cấu hình sc Tên dịch vụ bắt đầu= launch_parameter

Để bắt đầu dịch vụ trong HĐH Windows, bạn cần nhập vào bảng điều khiển:

# bắt đầu ròng Tên dịch vụ

Để dừng một dịch vụ:

# dừng mạng Tên dịch vụ

Để khởi động lại dịch vụ:

#khởi động lại mạng Tên dịch vụ

Nếu bạn muốn xác định dịch vụ nào sẽ phụ thuộc vào một dịch vụ nhất định, bạn có thể nhập sc liệt kê

Bây giờ, để xem dịch vụ nào phụ thuộc vào dịch vụ máy chủ có tên lanmanserver, bạn cần ra lệnh

sc enumdepend Lanmanserver

Ví dụ, việc chạy một lệnh như thế này trên máy chủ thử nghiệm Windows 2003 của tôi cho thấy rằng các dịch vụ Netlogon, Dfs và trình duyệt máy tính đều phụ thuộc vào dịch vụ máy chủ.

Để hoàn thành và xác định các phần phụ thuộc của máy chủ, bạn có thể sử dụng lệnh con qc như bên dưới

sc qc Lanmanserver

Lệnh này tạo ra chín dòng thông tin về dịch vụ, một trong số đó là PHỤ THUỘC. Khi bạn chạy lệnh này, hóa ra máy chủ không phụ thuộc vào bất kỳ dịch vụ nào. Để tìm ra dịch vụ nào có nhiều phụ thuộc, bạn có thể kiểm tra bộ điều phối trên dịch vụ Netlogon. Chúng ta sẽ thấy rằng dịch vụ Netlogon yêu cầu cả dịch vụ máy chủ và máy trạm phải được khởi động để bắt đầu hoạt động.

Đôi khi sự phụ thuộc phức tạp hơn. Ví dụ: một số dịch vụ chỉ có thể khởi động nếu một trong ba dịch vụ còn lại đang chạy. Chạy cả ba là không cần thiết; một là đủ. Bạn có thể hướng dẫn Windows về động thái này bằng cách thông báo cho hệ thống rằng một dịch vụ nhất định phụ thuộc vào một nhóm dịch vụ. Hệ thống Windows có một số dịch vụ, chẳng hạn như Lớp CDROM SCSI, cổng nhỏ SCSI, Bộ phân xử song song, NetBIOSGroup, NDIS, cũng như các dịch vụ đĩa chính và nhiều dịch vụ khác. Tất cả các dịch vụ và trình điều khiển này có thể được nhìn thấy trong danh sách các nhóm bằng cách nhập

loại truy vấn sc= dịch vụ?driver?all nhóm=

Ví dụ: để xem tất cả các dịch vụ và trình điều khiển trong nhóm dịch vụ của đĩa chính, bạn hãy nhập

loại truy vấn sc= tất cả nhóm=

Tên nhóm không quan trọng. Bạn có thể thêm dịch vụ vào các nhóm hiện có hoặc tạo nhóm dịch vụ mới bằng cách thêm lệnh group= groupname vào lệnh SC Create hoặc bằng cách sử dụng SC Config để lưu dịch vụ vào một nhóm. Ví dụ: để thêm dịch vụ Webimagemailer vào một nhóm mới có tên là không quan trọng, bạn hãy nhập

sc config nhóm webimagemailer= không quan trọng

Tuy nhiên, bạn không thể đặt một dịch vụ hoặc trình điều khiển vào nhiều nhóm dịch vụ.

Ngoài ra, bạn có thể đảm bảo rằng dịch vụ Webimagemailer không tải nếu không có nhóm dịch vụ được yêu cầu. Để xác định một nhóm Webstartup giả, chúng tôi sẽ sử dụng tham số dependency= webstartup. Để cho Windows biết Webstartup là một nhóm chứ không chỉ là một dịch vụ khác, bạn nên đặt dấu cộng trước tên của nó. Ví dụ: để cấu hình lại dịch vụ Webimagemailer để phụ thuộc vào nhóm khởi động Webstartup, bạn cần gõ

sc config webimagemailer phụ thuộc= +webstartup

Cho đến nay, chúng tôi đã tìm ra cách sử dụng các phần phụ thuộc và nhóm để cung cấp quyền kiểm soát chi tiết hơn về thứ tự tải dịch vụ. Và bây giờ sẽ không ai ngạc nhiên tại sao tôi lại hài lòng đến vậy khi phát hiện ra bộ điều phối SC cách đây vài năm.

PowerShell

PowerShell có thể làm hầu hết mọi thứ, bao gồm cả việc quản lý các dịch vụ Windows. Bạn có thể tạo một dịch vụ mới bằng lệnh ghép ngắn Dịch vụ mới. Hãy tạo dịch vụ tương tự như trong ví dụ trước, chỉ cần thêm Mô tả cho nó:

Dịch vụ mới -Name MyService -BinaryPathName C:\MyService\MyService.exe`
-DisplayName ``Dịch vụ mới của tôi`` -Mô tả ``Dịch vụ rất quan trọng !!!`

Bạn có thể thay đổi các tham số dịch vụ bằng lệnh ghép ngắn Set-Service:

Set-Service -Name MyService -Mô tả "Dịch vụ không quan trọng lắm" -Hướng dẫn sử dụng StartupType


Về nguyên tắc, PowerShell có chức năng gần giống như Sc.exe, ngoại trừ việc nó cho phép bạn thêm mô tả. Nhưng để loại bỏ các dịch vụ trong PS không phải là cách dễ dàng, bạn sẽ phải sử dụng cấu trúc này:

(Get-WmiObject win32_service -Filter \name=′MyService′").delete()

Cách chạy ứng dụng dưới dạng dịch vụ Windows

Có thể chạy ứng dụng khách dưới dạng dịch vụ không? Trong một trong số đó, tôi đã mô tả các cách tạo dịch vụ Windows bằng các công cụ hệ điều hành tiêu chuẩn. Tuy nhiên, không phải mọi ứng dụng bảng điều khiển đều có thể chạy như một dịch vụ và về nguyên tắc, các chương trình có giao diện đồ họa không thể hoạt động theo cách này. Nhưng vẫn có thể chạy ứng dụng dưới dạng dịch vụ và một chương trình có tên gốc sẽ giúp chúng tôi điều này Người quản lý dịch vụ không hút.

NSSM là phần mềm mã nguồn mở miễn phí và hỗ trợ tất cả các hệ điều hành của Microsoft từ Windows 2000 đến Windows 8. NSSM không yêu cầu cài đặt, chỉ cần tải xuống và giải nén. Bản phân phối bao gồm các phiên bản dành cho hệ điều hành 32 và 64 bit. Bạn có thể lấy chương trình từ trang web nssm.cc, hiện tại phiên bản ổn định mới nhất là 2.21.1, tôi sẽ sử dụng.

Để chứng minh khả năng của NSSM, chúng ta hãy thử chạy Windows Notepad dưới dạng dịch vụ trên Windows 8.1.

Tạo một dịch vụ

Để tạo một dịch vụ có tên sổ tay khởi chạy bảng điều khiển lệnh, đi tới thư mục chứa NSSM đã giải nén (dành cho Windows 64-bit) và nhập lệnh nssm install notepad, lệnh này sẽ mở cửa sổ trình cài đặt đồ họa NSSM. Để tạo một dịch vụ, chỉ cần chỉ định đường dẫn đến tệp thực thi trong trường Đường dẫn và nhấp vào nút “Cài đặt dịch vụ”. Ngoài ra, trong trường Tùy chọn, bạn có thể chỉ định các phím cần thiết để khởi động dịch vụ.

Bạn cũng có thể chỉ định một số tham số bổ sung khi tạo dịch vụ mới.

Tab Tắt máy liệt kê các phương pháp tắt máy và thời gian chờ được sử dụng khi ứng dụng tắt bình thường hoặc gặp sự cố. Khi NSSM nhận được lệnh dừng (ví dụ: khi tắt ứng dụng), nó sẽ cố gắng dừng ứng dụng được kiểm soát theo cách thông thường. Nếu ứng dụng không phản hồi thì NSSM có thể buộc chấm dứt tất cả các quy trình và quy trình con của ứng dụng này.

Có bốn bước để tắt ứng dụng và theo mặc định chúng sẽ được sử dụng theo thứ tự sau:

Trong giai đoạn đầu tiên, NSSM cố gắng tạo và gửi một sự kiện Ctrl+C. Phương pháp này hoạt động tốt cho các ứng dụng hoặc tập lệnh bảng điều khiển, nhưng không áp dụng được cho các ứng dụng đồ họa;
NSSM sau đó phát hiện tất cả các cửa sổ do ứng dụng tạo ra và gửi cho chúng thông báo WM_CLOSE, khiến ứng dụng thoát ra;
Bước thứ ba là NSSM tính toán tất cả các luồng được tạo bởi ứng dụng và gửi cho chúng một tin nhắn WM_QUIT, tin nhắn này sẽ được nhận nếu ứng dụng có hàng đợi tin nhắn luồng;
Phương án cuối cùng, NSSM có thể gọi phương thức TerminateProcess(), buộc ứng dụng phải chấm dứt.

Có thể vô hiệu hóa một số hoặc thậm chí tất cả các phương pháp, nhưng các phương pháp khác nhau hoạt động cho các ứng dụng khác nhau và bạn nên giữ nguyên mọi thứ để đảm bảo ứng dụng tắt đúng cách.

Theo mặc định, khi một dịch vụ gặp sự cố, NSSM sẽ cố gắng khởi động lại dịch vụ đó. Trên tab “Thoát hành động”, bạn có thể thay đổi hành động tự động khi ứng dụng kết thúc bất thường, cũng như đặt độ trễ trước khi ứng dụng tự động khởi động lại.

Trên tab “Đầu vào/Đầu ra (I/O)”, bạn có thể đặt chuyển hướng đầu vào/đầu ra của ứng dụng thành một tệp được chỉ định.

Trên tab “Môi trường”, bạn có thể đặt các biến môi trường mới cho dịch vụ hoặc ghi đè các biến môi trường hiện có.

Bạn cũng không thể sử dụng shell đồ họa và tạo ngay một dịch vụ trong bảng điều khiển bằng lệnh sau:

nssm cài đặt notepad ″C:\Windows\system32\notepad.exe″

Quản lý dịch vụ

Sau khi tạo dịch vụ bằng NSSM, hãy đi tới phần đính kèm Dịch vụ và tìm dịch vụ notepad. Như bạn có thể thấy, nhìn bề ngoài nó không khác gì các dịch vụ khác, chúng ta cũng có thể khởi động, dừng hoặc thay đổi chế độ khởi chạy. Tuy nhiên, lưu ý rằng nssm.exe được liệt kê là tệp thực thi.

Và nếu vào Trình quản lý tác vụ, chúng ta sẽ thấy hình ảnh sau: NSSM đang chạy như tiến trình chính (cha), dịch vụ notepad đang chạy như tiến trình con của nó và ứng dụng Notepad đã chạy trong tiến trình con này.

Xóa một dịch vụ

Để xóa một dịch vụ, hãy nhập lệnh nssm Remove notepad và xác nhận việc xóa dịch vụ đó. Và bằng cách nhập lệnh nssm delete notepad confirm , bạn có thể thực hiện mà không cần xác nhận.

Bắt đầu một dịch vụ một cách tương tác

Sự khác biệt chính giữa ứng dụng người dùng và dịch vụ là sau khi khởi chạy, ứng dụng có thể yêu cầu các hành động bổ sung của người dùng để tiếp tục chạy, chẳng hạn như nhấn nút hoặc nhập lệnh. Để làm được điều này, bạn cần có quyền truy cập vào nó, điều này hóa ra không dễ thực hiện như vậy.

Để bắt đầu một dịch vụ ở chế độ tương tác, bạn cần mở các thuộc tính của dịch vụ đó trong phần đính vào Dịch vụ và trên tab “Đăng nhập”, hãy chọn hộp kiểm “Cho phép tương tác với màn hình nền”.

Và rồi điều kỳ diệu bắt đầu :) Một dịch vụ được khởi chạy ở chế độ tương tác sẽ mở ra trong một phiên riêng biệt (phiên 0). Phiên này chỉ có thể được truy cập bằng cách sử dụng Dịch vụ phát hiện dịch vụ tương tác (ui0 detect), dịch vụ này giám sát việc khởi động các dịch vụ tương tác trên máy tính và đưa ra cảnh báo. Trong Windows 7\Server 2008, dịch vụ này hoạt động theo mặc định, nhưng trong Windows 8\Server 2012, dịch vụ này bị tắt và không xuất hiện trong phần đính kèm đồ họa của Dịch vụ (ít nhất là tôi không tìm thấy nó ở đó). Hơn nữa, nếu bạn tìm thấy dịch vụ bí ẩn này và cố gắng khởi động nó, bạn sẽ nhận được thông báo lỗi.

Nhưng thực tế là để chạy nó, bạn phải cho phép các dịch vụ tương tác chạy trên máy tính của mình. Do đó, hãy mở trình chỉnh sửa sổ đăng ký, tìm trong phần HKLM\System\CurrentControlSet\Control\Windows một tham số loại DWORD có tên Không có dịch vụ tương tác và đặt giá trị của nó thành 0 .

Sau đó mở bảng điều khiển PowerShell và khởi động dịch vụ khám phá bằng lệnh:

Dịch vụ bắt đầu -Tên ui0 detect

Sau khi đảm bảo rằng dịch vụ phát hiện đang chạy, chúng tôi khởi động lại dịch vụ notepad và chúng tôi nhận được cửa sổ này. Chọn “Xem tin nhắn”

và chúng tôi thấy mình đang ở trong phiên rỗng mà ứng dụng của chúng tôi chạy. Sau đó, chúng tôi thực hiện các hành động cần thiết với nó và quay trở lại.

Đây là một giải pháp thú vị để chạy các ứng dụng dưới dạng dịch vụ Windows. Không đẹp nhất nhưng khá phù hợp với tên gọi của nó :)

Nếu chúng ta cần chạy một ứng dụng thông thường dưới dạng dịch vụ Windows thì chúng ta có ít nhất hai cách để thực hiện việc này. Thứ nhất là tiện ích Srvany & Instsrv từ Resouce Kit, thứ hai là có một ứng dụng rất thú vị tên là Non-Sucking Service Manager, là phần mềm mã nguồn mở miễn phí có thể chạy trên hệ điều hành Microsoft từ Windows 2000 đến Windows 8 Đồng thời, NSSM không yêu cầu cài đặt và bạn có thể tải nó trên trang web chính thức nssm.cc. Chúng ta hãy xem xét kỹ hơn cả hai phương pháp chạy ứng dụng dưới dạng dịch vụ Windows.

Phương pháp một – Srvany & Instsrv.

Trước tiên, bạn nên đảm bảo rằng bạn đang làm việc với tài khoản quản trị viên; trong trường hợp này, bạn không chỉ có đủ quyền đối với bất kỳ hành động nào mà dịch vụ được tạo bằng tài khoản này sẽ tiếp tục hoạt động trong các tài khoản khác. Tiếp theo, sao chép các tệp instsrv.exe và srvany.exe vào thư mục system32. Chạy lệnh sau từ dòng lệnh:

instsrv MyService c:full_pathsrvany.exe (ở đây MyService là tên của dịch vụ mới được tạo mà bạn đã chỉ định). Bây giờ, để định cấu hình dịch vụ, hãy chuyển đến “Bảng điều khiển”, sau đó đến phần “Quản trị” rồi đến phần “Dịch vụ”, ở đây chúng ta tìm thấy dịch vụ đã tạo của mình và nhấp đúp vào dịch vụ đó bằng nút chuột trái.

Trong cửa sổ thuộc tính xuất hiện, chúng tôi lưu ý cách dịch vụ của chúng tôi sẽ bắt đầu: Tự động - nó sẽ tự động khởi động khi Windows khởi động, Thủ công - nó sẽ chỉ khởi động khi bạn khởi động thủ công, Đã tắt - nó sẽ không khởi động chút nào. Nếu bạn cần dịch vụ đang chạy để tương tác với máy tính để bàn của mình, hãy chọn hộp kiểm “Cho phép dịch vụ tương tác với máy tính để bàn”. Bây giờ chúng tôi khởi chạy trình soạn thảo sổ đăng ký trong nhánh:

HỆ THỐNG HKLM Dịch vụ kiểm soát hiện tại Your_service_name

tạo một khóa có tên là “Tham số” (không có dấu ngoặc kép) và đặt nó thành giá trị “Ứng dụng” (không có dấu ngoặc kép) thuộc loại REG_SZ, trong đó bạn chỉ định đường dẫn đầy đủ đến tệp thực thi bắt đầu dưới dạng dịch vụ. Tất cả những gì còn lại là khởi động lại máy tính hoặc khởi động dịch vụ theo cách thủ công.

Phương pháp hai - Trình quản lý dịch vụ không hút.

Mở dấu nhắc lệnh (tất nhiên là có quyền quản trị viên) và đi tới thư mục mà trước đó chúng tôi đã giải nén NSSM. Ở đây chúng ta nhập lệnh

nssm cài đặt our_service

Sau khi thực thi lệnh, cửa sổ trình cài đặt NSSM sẽ mở ra. Để tạo một dịch vụ, chúng ta chỉ cần chỉ định đường dẫn đến tệp thực thi trong trường Đường dẫn và nhấp vào nút “Cài đặt dịch vụ”. Ngoài ra, trong trường Tùy chọn, chúng ta có thể chỉ định các khóa nếu chúng cần thiết để khởi động dịch vụ.

Bây giờ hãy chuyển sang thiết lập một số thông số bổ sung. Tab Tắt máy liệt kê các phương pháp tắt máy được sử dụng khi một dịch vụ tắt bình thường hoặc ứng dụng gặp sự cố. Bạn nên đánh dấu vào tất cả các ô vì các phương pháp khác nhau hoạt động cho các ứng dụng khác nhau.

Hơn nữa, với cài đặt mặc định, nếu dịch vụ gặp sự cố, NSSM sẽ cố gắng khởi động lại dịch vụ, nhưng trên tab “Thoát hành động”, bạn có thể chỉ định hành động nào sẽ được thực hiện trong trường hợp ứng dụng tắt bất thường và đặt độ trễ trước đó. tự động khởi động lại ứng dụng. Trên tab “Môi trường”, chúng ta có thể đặt các biến môi trường mới cho dịch vụ hoặc ghi đè các biến môi trường hiện có.

Trong trường hợp không muốn sử dụng shell đồ họa, chúng ta có thể tạo ngay một dịch vụ từ dòng lệnh bằng lệnh:

nssm cài đặt notepad?full_path_to_executable_file_file.exe?

Để xóa một dịch vụ, hãy nhập lệnh:

nssm xóa our_service

và xác nhận việc loại bỏ nó bằng cách nhập lệnh:

nssm xóa notepad xác nhận

thì xác nhận sẽ không được yêu cầu.

Đây là những cách khá đơn giản để khởi động một ứng dụng dưới dạng dịch vụ Windows, giờ đây ứng dụng của bạn sẽ tự động khởi động dưới dạng dịch vụ.

(Chưa có xếp hạng)

Bạn đã bao giờ muốn chạy một ứng dụng như một dịch vụ hệ thống chưa? Tôi nghĩ vậy, vì một số chương trình được tích hợp sẵn tính năng này. Bạn có biết rằng một ứng dụng chạy dưới dạng dịch vụ sẽ chạy nhanh hơn nhiều và chiếm ít dung lượng bộ nhớ hơn không?

Trong bài viết này, chúng ta sẽ xem xét một tiện ích nhỏ có tên Any Service, tiện ích này chỉ sau hai cú nhấp chuột sẽ giúp bạn khởi chạy bất kỳ ứng dụng nào dưới dạng dịch vụ hệ thống. Bất kỳ Dịch vụ nào cũng là một trình bao bọc xung quanh hai tiện ích tiêu chuẩn srvinstwinstsrvđi kèm với Windows 2000 Server và để nó hoạt động bình thường, bạn sẽ cần có quyền Quản trị viên.

Chương trình hoàn toàn miễn phí, chỉ chiếm 49Kb và không cần cài đặt. Giao diện trực quan và được cung cấp các giải thích chi tiết dưới dạng chú giải công cụ.

Cửa sổ chính của chương trình cho phép bạn thực hiện các cài đặt ban đầu cho dịch vụ trong tương lai của mình:


Trong trường đầu tiên, nhập đường dẫn đầy đủ đến tệp điều hành của ứng dụng sẽ được khởi chạy dưới dạng dịch vụ. Trong cột “Tên dịch vụ”, chúng tôi cho biết dịch vụ của chúng tôi sẽ được gọi là gì. Trong "Mô tả dịch vụ" - bất kỳ mô tả nào về dịch vụ mới mà bạn hiểu.

  • Tương tác với màn hình nền - kiểm tra xem ứng dụng có biểu tượng trên khay hệ thống hay không;
  • Dịch vụ tự khởi động - kiểm tra xem bạn có muốn dịch vụ tự động khởi động hay không;
  • Bắt đầu ngay sau khi tạo - chọn hộp này nếu bạn muốn dịch vụ bắt đầu ngay sau khi tạo;

Để làm ví dụ về cách hoạt động của tiện ích này, hãy thử khởi chạy trình quản lý tệp phổ biến Total Commander dưới dạng dịch vụ hệ thống.



Sau khi điền vào tất cả các trường bắt buộc, hãy nhấp vào nút “Tạo”.


Vậy là xong, dịch vụ mới đã được tạo và sẵn sàng hoạt động. Bạn có thể xem kết quả hành động của mình bằng cách sử dụng nút “Dịch vụ”, nút này sẽ mở ra phần đính kèm nhóm.



Như bạn có thể thấy, dịch vụ Total Commander mới của chúng tôi đã hoạt động. Bây giờ bạn có thể thay đổi cài đặt của nó giống như bất kỳ dịch vụ hệ thống nào khác.

Nếu bạn muốn xóa một dịch vụ, hãy sử dụng nút "Xóa..." trong cửa sổ chương trình chính. Cửa sổ sau sẽ mở ra trước mặt bạn:


Tìm dịch vụ cần thiết và nhấp vào “Xóa”. Dịch vụ Total Commander không còn tồn tại.

Các vấn đề đã biết: Trước lần khởi chạy đầu tiên, bạn nên tắt chương trình chống vi-rút, nếu không, chương trình sẽ không thể hoạt động thêm vì khi khởi chạy lần đầu tiên, nó sẽ tìm cả hai tiện ích (srvinstw và instsrv) trong thư mục %WINDIR%\System32\ và nếu không tìm thấy, nó sẽ sao chép chúng từ tài nguyên của chính nó.

Cách chạy ứng dụng dưới dạng dịch vụ Windows



Có thể chạy ứng dụng khách dưới dạng dịch vụ không? Một trong những bài viết chứa các cách tạo dịch vụ Windows bằng các công cụ hệ điều hành tiêu chuẩn. Tuy nhiên, không phải mọi ứng dụng bảng điều khiển đều có thể chạy như một dịch vụ và về nguyên tắc, các chương trình có giao diện đồ họa không thể hoạt động theo cách này. Nhưng vẫn có thể chạy ứng dụng dưới dạng dịch vụ và một chương trình có tên gốc sẽ giúp chúng tôi điều này Người quản lý dịch vụ không hút.

NSSM là phần mềm mã nguồn mở miễn phí và hỗ trợ tất cả các hệ điều hành của Microsoft từ Windows 2000 đến Windows 8. NSSM không yêu cầu cài đặt, chỉ cần tải xuống và giải nén. Bản phân phối bao gồm các phiên bản dành cho hệ điều hành 32 và 64 bit. Bạn có thể lấy chương trình từ trang web nssm.cc, hiện tại phiên bản ổn định mới nhất là 2.21.1, tôi sẽ sử dụng.
Để chứng minh khả năng của NSSM, chúng ta hãy thử chạy Windows Notepad dưới dạng dịch vụ trên Windows 8.1.

Tạo một dịch vụ

Để tạo một dịch vụ có tên sổ tay khởi chạy bảng điều khiển lệnh, đi tới thư mục chứa NSSM đã giải nén (dành cho Windows 64-bit) và nhập lệnh

Mã số:

Nssm cài đặt notepad

sẽ mở cửa sổ trình cài đặt đồ họa NSSM. Để tạo một dịch vụ, chỉ cần chỉ định đường dẫn đến tệp thực thi trong trường Đường dẫn và nhấp vào nút “Cài đặt dịch vụ”. Ngoài ra, trong trường Tùy chọn, bạn có thể chỉ định các phím cần thiết để khởi động dịch vụ.

Bạn cũng có thể chỉ định một số tham số bổ sung khi tạo dịch vụ mới.

Tab Tắt máy liệt kê các phương pháp tắt máy và thời gian chờ được sử dụng khi ứng dụng tắt bình thường hoặc gặp sự cố. Khi NSSM nhận được lệnh dừng (ví dụ: khi tắt ứng dụng), nó sẽ cố gắng dừng ứng dụng được kiểm soát theo cách thông thường. Nếu ứng dụng không phản hồi thì NSSM có thể buộc chấm dứt tất cả các quy trình và quy trình con của ứng dụng này.

Có bốn bước để tắt ứng dụng và theo mặc định chúng sẽ được sử dụng theo thứ tự sau:

Trong bước đầu tiên, NSSM cố gắng tạo và gửi sự kiện Ctrl+C. Phương pháp này hoạt động tốt cho các ứng dụng hoặc tập lệnh bảng điều khiển, nhưng không áp dụng được cho các ứng dụng đồ họa;
NSSM sau đó phát hiện tất cả các cửa sổ do ứng dụng tạo ra và gửi cho chúng thông báo WM_CLOSE, khiến ứng dụng thoát ra;
Bước thứ ba là NSSM tính toán tất cả các luồng được tạo bởi ứng dụng và gửi cho chúng một tin nhắn WM_QUIT, tin nhắn này sẽ được nhận nếu ứng dụng có hàng đợi tin nhắn luồng;
Phương án cuối cùng, NSSM có thể gọi phương thức TerminateProcess(), buộc ứng dụng phải chấm dứt.

Có thể vô hiệu hóa một số hoặc thậm chí tất cả các phương pháp, nhưng các phương pháp khác nhau hoạt động cho các ứng dụng khác nhau và bạn nên giữ nguyên mọi thứ để đảm bảo ứng dụng tắt đúng cách.

Theo mặc định, khi một dịch vụ gặp sự cố, NSSM sẽ cố gắng khởi động lại dịch vụ đó. Trên tab “Thoát hành động”, bạn có thể thay đổi hành động tự động khi ứng dụng kết thúc bất thường, cũng như đặt độ trễ trước khi ứng dụng tự động khởi động lại.

Trên tab “Đầu vào/Đầu ra (I/O)”, bạn có thể đặt chuyển hướng đầu vào/đầu ra của ứng dụng thành một tệp được chỉ định.

Trên tab “Môi trường”, bạn có thể đặt các biến môi trường mới cho dịch vụ hoặc ghi đè các biến môi trường hiện có.

Bạn cũng không thể sử dụng shell đồ họa và tạo ngay một dịch vụ trong bảng điều khiển bằng lệnh sau:

Mã số:

Nssm cài đặt notepad "C:\Windows\system32\notepad.exe"

Quản lý dịch vụ

Sau khi tạo dịch vụ bằng NSSM, hãy đi tới phần đính kèm Dịch vụ và tìm dịch vụ notepad. Như bạn có thể thấy, nhìn bề ngoài nó không khác gì các dịch vụ khác, chúng ta cũng có thể khởi động, dừng hoặc thay đổi chế độ khởi chạy. Tuy nhiên, lưu ý rằng nssm.exe được liệt kê là tệp thực thi.