Cari layanan Windows Anda, pratinjau setiap perubahan, dan lihat apa yang menyimpang sejak kemarin

Better Windows Services adalah services.msc yang dibangun ulang untuk orang yang mengelola mesin Windows - sebuah jendela dan sebuah baris perintah di atas satu mesin yang sama. Ajukan pertanyaan kepada mesin alih-alih menggulir delapan ratus baris. Lihat apa yang akan dilakukan sebuah perubahan sebelum Anda menekan apa pun. Dan bagian yang tidak pernah dimiliki services.msc: bekukan setiap layanan ke dalam satu berkas, lalu seminggu kemudian tanyakan apa yang berubah.

  • Bebas dan gratis, GPL-3.0
  • Satu berkas, atau sebuah installer
  • Tidak perlu hak administrator untuk melihat
  • Tidak pernah terhubung ke internet
Jendela dengan lima entri terpilih dan rencana untuk memulainya yang ditampilkan di atas daftar: lima langkah, catatan bahwa dua di antaranya sudah dalam keadaan itu, satu baris bws start untuk setiap entri, dan tombol Start 5 entries.
Entri yang dipilih, sebuah rencana yang ditampilkan sebelum apa pun terjadi, dan baris bws yang meminta hal yang persis sama. Program ini berbahasa Inggris - jendela membaca berkas bahasa yang ditaruh di sebelahnya, sehingga terjemahan dimungkinkan tanpa membangun ulang.
Setengah menit bersamanya

Seperti apa tampilannya saat dipakai

Sebuah sesi nyata, pada Windows yang terpasang dalam bahasa Polandia - nama tampilan berasal dari Windows, jadi memakai bahasanya. Jendela itu sendiri berbahasa Inggris.

Empat entri terpilih dan rencana untuk memulainya, restart paksa Local Session Manager yang rencananya memperingatkan bahwa mesin tidak berfungsi tanpanya dan meminta namanya sebelum tombol bekerja, pertanyaan awal di bawah kotak pencarian kosong, dan Print Spooler yang ditemukan dengan mengetik sebagian namanya lalu dimulai.
Empat entri terpilih dan rencana untuk memulainya, restart paksa yang meminta nama layanan yang dibutuhkan mesin, pertanyaan di bawah kotak pencarian kosong, dan Print Spooler yang ditemukan dengan mengetik lalu dimulai.
Layar pembuka: tiga kartu berisi angka tentang mesin ini - layanan yang berjalan, layanan yang diatur mulai otomatis tetapi tidak naik, dan layanan yang diatur mulai otomatis tetapi berkasnya hilang - dan tombol Show the list.
Layar ini terbuka dengan beberapa angka tentang mesin ini. Masing-masing adalah sebuah pertanyaan - klik, dan pertanyaan itu masuk ke kotak pencarian.
Daftar layanan dengan tiga daftar di atas kotak pencarian, kotak pencarian kosong, tombol filter yang terbuka dalam baris untuk status, tipe startup, tanda tangan, ketidaksesuaian, dan pemicu, serta daftar di bawahnya.
Tombol filter menulis ke kotak pencarian, sehingga apa yang Anda klik adalah kueri yang bisa Anda baca dan sunting.
Mengapa ini ada

services.msc nyaris tidak berubah sejak Windows 2000

Administrator menghabiskan berjam-jam seminggu di dalamnya sambil menabrak tembok yang sama.

  • Tidak ada pencarian. Satu-satunya navigasi adalah melompat ke huruf pertama sebuah nama tampilan.
  • Tidak ada pemfilteran. Tidak ada cara untuk bertanya tunjukkan apa yang diatur mulai otomatis dan tidak berjalan.
  • Satu baris sekali waktu. Me-restart dua belas layanan berarti dua belas klik kanan dan dua belas kali menunggu.
  • "Stopping..." selamanya, tanpa jalan keluar selain Task Manager dan menebak prosesnya.
  • Tidak ada riwayat. Tidak ada yang tahu siapa yang mengatur tipe startup itu menjadi Disabled, atau kapan.
  • Data tersembunyi. Proses, pemicu, hak istimewa, deskriptor keamanan, siapa yang menandatangani berkas eksekusi - semuanya butuh sc.exe dari ingatan, atau registri.
  • Tidak ada padanan di baris perintah. sc.exe punya sintaks dari era sembilan puluhan, dan Get-Service bawaan Windows, di Windows PowerShell 5.1, tidak menampilkan akun tempat layanan berjalan, apalagi deskripsinya. PowerShell 7 menampilkan keduanya dan dipasang terpisah.

Alat lain masing-masing memperbaiki sebagian

Process Hacker dan System Informer menampilkan daftar yang kaya dan dapat mematikan proses secara paksa, tetapi tidak punya audit dan tidak punya baris perintah. sc.exe dan PsService bisa melakukan segalanya dan tidak memberi tahu Anda apa pun. Cmdlet *-Service milik PowerShell bisa diskrip dan dangkal.

Tidak ada yang menggabungkan daftar yang bisa dicari, pratinjau sebelum setiap perubahan, dan catatan tentang apa yang berubah dari waktu ke waktu - dan catatan itulah alasan mempertahankan alat ini di sebuah mesin setelah sore pertama.

Perbandingan lengkap
Apa yang dilakukannya

Sebuah jendela dan sebuah baris perintah di atas satu mesin yang sama

Bertanya, bukan menggulir

start:auto !status:running berarti apa yang seharusnya hidup dan tidak hidup. Satu bahasa, di kotak pencarian dan di bws list --query, dengan bidang yang ditawarkan saat Anda mengetik.

Tampilkan rencana sebelum apa pun terjadi

Setiap penghentian, permulaan, restart, dan perubahan tipe startup dipratinjau bersama layanan yang ikut jatuh, dan pratinjau itulah yang dijalankan.

Katakan apa yang menyimpang, dan siapa yang mengubahnya

bws snapshot create membekukan mesin ke dalam berkas, dan bws snapshot diff menyebutkan apa yang berubah sejak itu, konfigurasi terpisah dari apa yang sekadar mulai atau berhenti. bws history menyebutkan, dari log System, siapa yang mengubah tipe startup dan siapa yang memasang layanan. Jendela melakukan ketiganya di bawah Audit....

Perbaiki masalah umum dengan sekali tekan

Tab Tools dan bws tool fix me-restart layanan di balik printer yang tidak mencetak, suara yang hilang, atau pencarian yang macet, bersama apa yang bergantung padanya, melalui rencana yang sama dengan yang lain.

Hentikan layanan yang tidak mau berhenti

Ia meminta dengan sopan terlebih dahulu dan mengakhiri proses hanya jika itu gagal, sambil menyebut setiap layanan lain yang hidup di dalamnya.

Tampilkan apa yang disembunyikan services.msc

Siapa yang menandatangani berkas eksekusi dan apakah Windows memercayainya, pemicu, hak istimewa, deskriptor keamanan, proses dan memorinya. Sebagai kolom, dan sebagai hal yang bisa dicari.

Katakan saat sesuatu tidak bisa dibaca

Bidang yang tidak bisa dibacanya dilaporkan sebagai tidak terbaca, tidak pernah ditampilkan kosong. Snapshot yang diambil tanpa hak administrator menyatakannya di dalam berkas itu sendiri.

Cocok dengan skrip

--json di setiap perintah, kode keluar untuk setiap akhiran, dan 5 ketika sebuah perbandingan menemukan penyimpangan.

Berjalan dari satu berkas, offline

Ekstrak dan jalankan, atau pasang untuk seluruh mesin. Tidak ada .NET yang perlu dipasang, dan tidak pernah terhubung ke internet. Membaca tidak membutuhkan hak administrator. GPL-3.0.

Bagian yang tidak pernah dilakukan services.msc

Apa yang berubah sejak kemarin

Snapshot adalah seluruh mesin pada satu saat - setiap layanan dan driver, dengan tipe startup, akun, jalur peluncuran, hash dan penandatangan berkasnya, dependensi, pemicu, hak istimewa, dan deskriptor keamanan. Berupa JSON dengan satu bidang per baris, sehingga bisa masuk ke repositori dan git diff membacanya.

$ bws snapshot diff before.json --live --exit-code
Changed (2):
  Spooler  Print Spooler
    startType: Manual -> Automatic
    status: Stopped -> Running  (running state, not configuration)
  wlidsvc  Microsoft Account Sign-in Assistant
    status: Stopped -> Running  (running state, not configuration)

Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
  • Konfigurasi dan status berjalan dilaporkan terpisah. Dua snapshot yang diambil berselang sehari berbeda pada apa yang kebetulan berjalan, dan hampir tidak ada yang merupakan penyimpangan - tipe startup yang berubah adalah baris yang perlu dibaca.
  • Apa yang tidak bisa dibandingkan dicantumkan, tidak disembunyikan. Bidang yang tidak pernah dibaca oleh sebuah snapshot muncul sebagai not compared, sehingga perbandingan yang berbunyi tidak ada yang berubah berarti tidak ada yang berubah pada apa yang bisa dilihat kedua sisi.
  • --exit-code berakhir dengan 5 ketika konfigurasi berbeda, sehingga tugas terjadwal dapat mengambil snapshot saat penerapan dan memanggil seseorang pada malam pertama mesin menyimpang.
  • Dua mesin, dua berkas. Ambil satu snapshot di staging dan satu di produksi, lalu bandingkan di mana saja.
Cara kerja snapshot dan penyimpangan
Tidak ada yang terjadi tanpa rencana

Pratinjau adalah eksekusinya

Setiap operasi yang menulis membangun rencana terlebih dahulu, dan rencana yang sama itu adalah pratinjau, kaskade layanan dependen, penolakan sebelum Anda menekan apa pun, baris perintah yang meminta hal yang sama, dan jalan kembali sesudahnya.

$ bws stop Winmgmt --dry-run --dependents
Plan: stop Winmgmt  (2 steps)
  1. stop  vmms      (would break otherwise)
  2. stop  Winmgmt   (asked for)

Warnings:
  - Stopping Winmgmt also stops one other entry: vmms
  - Winmgmt starts automatically, so it will be back after the next restart.
  • Jalankan tanpa --dry-run dan inilah langkah-langkahnya, dalam urutan itu, dengan alasan yang sama di sampingnya. Tidak ada jalur kode kedua untuk eksekusi yang sebenarnya.
  • Apa yang ikut jatuh ada di dalam rencana. Layanan yang akan rusak adalah langkah tersendiri, dan rencana yang akan menjatuhkan sesuatu yang dibutuhkan mesin menyebutkannya dalam peringatan.
  • Penolakan datang sebelum tombol. Sebuah driver, layanan yang penghentiannya tidak diterima manajer, proses yang dilindungi sistem - ditolak saat rencana dibangun, beserta alasannya. Jendela mengabu-abukan tombol dan menjelaskan alasannya di sampingnya.
  • Penghentian paksa adalah dua langkah, dan yang kedua bersyarat. bws kill meminta layanan berhenti dan mengakhiri prosesnya hanya jika itu tidak berhasil, sambil menyebut setiap layanan lain yang hidup di dalamnya.
Ketika layanan tidak mau berhenti
Dua menit bersamanya

Dari baris perintah

Mesin yang sama dengan jendela, untuk skrip, tugas terjadwal, dan CI. Data masuk ke keluaran standar dan yang lain ke galat standar, sehingga bws list --json | jq berfungsi dan peringatan tidak pernah mendarat di JSON Anda.

bws list --query "start:auto !status:running"     apa yang seharusnya hidup dan tidak hidup
bws list --query "file:missing"                   layanan yang berkas eksekusinya hilang
bws list --query "signed:no peruser:no"           tidak bertanda tangan, tanpa salinan per sesi
bws show Spooler                                  semua yang diketahui tentang satu entri
bws stop Winmgmt --dry-run --dependents           apa yang akan ikut jatuh bila dihentikan
bws kill Spooler --dry-run                        apa yang akan ikut terbawa bila prosesnya diakhiri
bws start-type Spooler manual --dry-run           apa yang terjadi bila dikeluarkan dari otomatis
bws snapshot create before.json                   bekukan mesin sebelum perubahan
bws snapshot diff before.json --live --exit-code  apa yang berubah sejak itu, 5 bila konfigurasinya berubah
bws history Spooler                               siapa yang mengubah tipe startup-nya, dan kapan
bws tool fix printer --dry-run                    apa yang akan dilakukan perbaikan cepat untuk printer yang macet
Setiap perintah, opsi, dan kode keluar
Dapatkan

Ekstrak dan jalankan, atau pasang

Windows 10 1809 atau Windows Server 2019 dan yang lebih baru, 64-bit. Arsip tidak membutuhkan installer dan tidak menulis apa pun ke registri, dan melihat tidak membutuhkan hak administrator. Mengubah apa pun membutuhkan sesi dengan hak tinggi, dan kedua bagian menyatakannya alih-alih gagal diam-diam - jendela menawarkan Restart as admin.

BerkasApa itu
BetterWindowsServices-win-x64.zipJendela, satu berkas eksekusi mandiri - tidak ada .NET yang perlu dipasang
bws-cli-win-x64.zipBaris perintah, satu berkas eksekusi mandiri, untuk skrip dan CI
BetterWindowsServices-win-x64.msiInstaller: kedua program untuk setiap akun di mesin, jendela di menu Start, dan bws di PATH

Berkas eksekusi membawa tanda tangan Authenticode, sehingga Windows menyebut penerbitnya alih-alih memperingatkan tentang penerbit yang tidak dikenal.