Cách tạo dịch vụ Windows

Đôi khi bạn cần một ứng dụng hoặc tập lệnh để tiếp tục chạy cho dù bạn đã đăng nhập vào máy tính của mình hay chưa. Có thể đó là một tập lệnh PowerShell để giám sát các cổng(PowerShell script to monitor ports) hoặc một máy chủ web lưu trữ một trang trên mạng gia đình của bạn(web server hosting a page on your home network) .

Vấn đề là nếu bạn muốn một quy trình, tập lệnh hoặc chương trình chạy miễn là máy tính đang bật, bạn sẽ cần tạo Dịch vụ Windows(Windows Service) .

Tôi cần gì để tạo một dịch vụ Windows?(What Do I Need to Create a Windows Service?)

Để tạo một dịch vụ Windows trong Windows 10 , có một số điều kiện tiên quyết: 

  • Quyền truy cập của quản trị(Administrator) viên trên máy tính
  • Một cái gì đó để chạy như một dịch vụ ( PowerShell Script , chương trình, v.v.)
  • Trình quản lý dịch vụ(Service Manager) không hút ( NSSM ) đã được cài đặt

Trình quản lý dịch vụ không hút là gì?(What Is the Non-Sucking Service Manager?)

Vâng, bạn không thể bỏ qua một cái tên như vậy mà không giải thích nó. Chắc chắn cái tên này là không may, nhưng nó là chính xác. Trình quản lý dịch vụ(Service Manager) không hút ( NSSM ) được cho là cách dễ nhất để tạo một dịch vụ Windows vừa có độ tin cậy cao vừa có thể định cấu hình. Thêm vào đó, nó là Phần mềm nguồn mở(Open Source Software) (OSS) miễn phí.

NSSM có thể được sử dụng thông qua Windows Command Prompt hoặc giao diện người dùng đồ họa ( GUI ). Điều này có nghĩa là bất kỳ ai cũng có thể sử dụng nó. NSSM có thể được sử dụng trên bất kỳ phiên bản Windows nào trở về trước, bao gồm cả Windows 2000 . Có phiên bản 32-bit và 64-bit(32-bit and 64-bit) . Nếu bạn đang sử dụng máy tính 64 bit, hãy thử phiên bản đó trước. Nếu nó không hoạt động, hãy quay lại phiên bản 32-bit. 

Bạn có thể tải xuống NSSM từ trang web(download NSSM from the website) , sao chép NSSM từ Git(clone NSSM from Git) hoặc cài đặt NSSM với Chocolatey(install NSSM with Chocolatey) . Chocolatey là một trình quản lý gói cho Windows(Chocolatey is a package manager for Windows) . Phương pháp cài đặt(Installation) sẽ khác nhau tùy thuộc vào con đường bạn đi. Vui lòng(Please) tham khảo hướng dẫn của NSSM . Đối với ví dụ của chúng tôi, chúng tôi đang tải xuống từ trang web NSSM và cài đặt nó trong C:\WINDOWS\system32 .

Tạo dịch vụ Windows với NSSM(Create a Windows Service With NSSM)

Đối với ví dụ này, chúng tôi sẽ tạo một dịch vụ từ tập lệnh PowerShell(PowerShell script) để ghi phần trăm tải trung bình của CPU(CPU average load percentage)

  1. Sao chép và lưu tập lệnh này dưới dạng log-CPULoadPercentage.ps1 vào một nơi mà người khác không thể truy cập. Hãy thử tạo thư mục C:/Scripts và lưu trữ nó ở đó. Ngoài ra, hãy tạo một thư mục trong Scripts được gọi là Logs . Lưu ý rằng đường dẫn đến tập lệnh là C:/Scripts/log-CPULoadPercentage.ps1 . Bạn sẽ cần nó sau.

Lưu ý(Note) : Tất cả các dòng bên dưới kèm theo ký hiệu # là nhận xét và sẽ không ảnh hưởng đến tập lệnh.

CLS #Optional. I like to use this to clear the terminal when testing.

#Make sure you have a folder called Logs in the same directory as this script
#The log is where the records will be stored.
Start-Transcript -Path "$PSScriptRoot\Logs\log-CPULoadPercentage-$(get-date -f yyyy-MM-dd).txt" -Append

#While loop keeps it running until manually stopped
While ($True){
     #Creates a timestamp to know when the measurement was taken
     $timeStamp = get-date -f yyyy-MM-h:mm:ss

     #Gets the average load percentage at that time, then waits 5 seconds to do it again.
     $cpuLoadPercent = Get-CimInstance win32_processor | Measure-Object -Property LoadPercentage -Average | Select-Object Average;Start-Sleep -Seconds 5

     #Isolates just the average so there isn't a weird @{Average=13} string
     $cpuLoadPercent = $cpuLoadPercent.Average

     #writes results to screen, or in this case to the log
     Write-Host "$timeStamp CPU Load Percentage $cpuLoadPercent"
}

Stop-Transcript
  1. Điều này có thể được thực hiện trong Windows Command Prompt hoặc PowerShell. Mở nó với tư cách Quản trị viên(Open it as Administrator) .
  2. Nhập lệnh nssm install logCPUAvg và chạy nó. Cửa sổ trình cài đặt dịch vụ NSSM sẽ mở ra.(NSSM service installer)

  1. Nhấp(Click) vào nút dấu chấm lửng bên cạnh trường Path:, điều hướng đến powershell.exe thường được đặt tại C:\Windows\System32\ . Chọn powershell.exe. Các trường Path:Startup directory: sẽ được tự động điền.

  1. Nhập thông tin sau vào trường Arguments:: -ExecutionPolicy -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” , trong đó phần cuối cùng là đường dẫn đến tập lệnh PowerShell của bạn và tên tập lệnh.  

  1. Chọn tab Chi tiết . (Details)Nhập những gì bạn muốn dịch vụ hiển thị như trong trình quản lý Dịch vụ (Services)Windows vào trường Tên hiển thị:. (Display name: )Sau đó, nhập chức năng của nó vào trường Description :. (Description:)Kiểu khởi động:(Startup type: ) có thể được đặt là Tự động(Automatic) , Tự động (Khởi động bị trì hoãn)(Automatic (Delayed Start)) , Thủ công(Manual) hoặc Tắt(Disabled) . Đối với bài tập này, Tự động(Automatic) là tốt.

  1. Chọn tab Đăng nhập . (Log on )Chọn Tài khoản này(This account) : nút radio và nhập tài khoản và mật khẩu mà dịch vụ sẽ chạy. Bạn sẽ cần chọn một tài khoản mà dịch vụ sẽ chạy. Lý tưởng nhất là bạn sẽ có một tài khoản Windows được tạo chỉ để chạy dịch vụ này. Quyền của tài khoản này chỉ nên được giới hạn ở những gì dịch vụ cần thực hiện. Bạn có thể chọn tài khoản Hệ thống cục(Local System account) bộ , nhưng tài khoản này không được khuyến khích vì lý do bảo mật.

Có một số tab khác có thể được sử dụng để tùy chỉnh dịch vụ. Đối với bài tập này, các giá trị mặc định trong các tab đó là đủ. Chọn nút Cài đặt dịch vụ(Install service ) .

  1. Khi dịch vụ được cài đặt, bạn sẽ thấy Service “logCPUAvg” installed successfully! cửa sổ. Chọn OK để đóng nó. Điều đó kết thúc cài đặt.

  1. Mở Trình quản lý dịch vụ Windows(Windows Services Manager ) và đảm bảo dịch vụ ở đó.

  1. Chạy(Run) dịch vụ để đảm bảo nó sẽ chạy.

  1. Để xác minh rằng dịch vụ này đang chạy, hãy sử dụng File Explorer để điều hướng đến nơi mà nhật ký được cho là sẽ được lưu để xem liệu nó có tồn tại hay không.

nssm-check-log.png

Loại bỏ dịch vụ Windows với NSSM(Removing a Windows Service With NSSM)

Có thể bạn không cần theo dõi tải CPU của mình(monitor your CPU) nữa, vì vậy bạn muốn loại bỏ dịch vụ. May mắn thay, NSSM làm cho điều đó trở nên dễ dàng. 

  1. Trong Trình quản lý dịch vụ Windows(Windows Services Manager) , dừng dịch vụ. Thực hiện việc này bằng cách chọn dịch vụ Tải trung bình của CPU(Log CPU Average Load ) , sau đó chọn nút dừng hình vuông trên thanh công cụ hoặc liên kết Dừng dịch vụ(Stop the service) ở phía bên trái.

  1. Mở Windows Command Prompt hoặc PowerShell với tư cách Quản trị viên.
  2. Nhập lệnh nssm remove logCPUAvg và thực hiện lệnh. 

  1. NSSM sẽ yêu cầu bạn xác nhận. Chọn (Yes) .

  1. Khi dịch vụ bị xóa, bạn sẽ thấy Service “logCPUAvg” removed successfully! Xác nhận. Chọn OK và bạn đã hoàn tất.

Đó là tất cả. Bạn nên kiểm tra trình quản lý dịch vụ để đảm bảo dịch vụ không còn ở đó. Nếu bạn vẫn thấy dịch vụ, bạn có thể cần phải làm mới màn hình và nó sẽ biến mất.

Dịch vụ là một cách tuyệt vời để chạy các ứng dụng hoặc tập lệnh cần chạy mọi lúc, tự khởi động lại nếu chúng bị lỗi hoặc cần các đặc quyền khác với người dùng hiện tại. Nếu bạn không cần ứng dụng hoặc tập lệnh của mình để thực hiện tất cả những điều đó, hãy cân nhắc sử dụng Tác vụ đã lên lịch(using a Scheduled Task) để thay thế.



About the author

Tôi có kiến ​​thức nền tảng về kỹ thuật máy tính và công nghệ thông tin, điều này đã cho tôi một góc nhìn độc đáo về nền tảng Windows 10 và 11. Đặc biệt, tôi được trải nghiệm với cả "Trải nghiệm máy tính để bàn" của Windows 10 và trình duyệt Microsoft Edge. Kinh nghiệm của tôi với hai nền tảng này giúp tôi hiểu sâu sắc về cách chúng hoạt động và kiến ​​thức chuyên môn của tôi trong các lĩnh vực này cho phép tôi đưa ra lời khuyên đáng tin cậy về cách cải thiện chúng.



Related posts