下載

解壓縮即用,或安裝

版本 0.5.0。壓縮檔不需要安裝程式,也不向登錄寫入任何內容,檢視時不需要系統管理員權限。使用已簽章的安裝程式,則會把這兩個程式裝到整台電腦上。免費開放原始碼,採用 GPL-3.0。

發行內容

檔案說明
BetterWindowsServices-win-x64.zip視窗:BetterWindowsServices.exe,一個獨立式的可執行檔,內建自己的 .NET 執行階段
bws-cli-win-x64.zip命令列:bws.exe,一個獨立式的可執行檔,用於指令碼、排程工作和 CI
BetterWindowsServices-win-x64.msi安裝程式:為電腦上的每個帳戶把這兩個程式安裝到 Program Files,視窗出現在開始功能表中,bws 加入電腦的 PATH

可以取其一或兩者都要,它們是同一引擎的兩個用戶端,彼此互不相依。在伺服器上,命令列是兩者中較小的一個,視窗能做的它都能做。

安裝程式包含的內容與兩個壓縮檔完全相同。它可以用 msiexec /i BetterWindowsServices-win-x64.msi /qn 靜默安裝,較新的版本會覆蓋安裝在較舊的版本之上,並且它不會關閉任何正在執行的程式,所以升級前請先關閉視窗和任何正在執行的 bws,因為遺留在執行中的副本可能會報錯停止。在「設定」的「應用程式」中解除安裝,會刪除程式、開始功能表項目和 PATH 項目,而不會動你自己的檔案。

可執行檔帶有 Authenticode 簽章,因此 Windows 會顯示發行者名稱,而不是警告來自未知發行者。

系統需求

  • Windows 10 1809 或更高版本,或 Windows Server 2019 或更高版本。僅支援 64 位元:32 位元處理程序讀取的是被重新導向的路徑和登錄機碼,這會悄悄地產生錯誤的結果。
  • 無需安裝 .NET。兩個可執行檔都自帶 .NET 執行階段。
  • 變更任何內容都需要系統管理員權限。讀取、搜尋、快照和差異在沒有系統管理員權限時也能運作,只是可見的項目會更少,工具會在頂部說明這一點,而不是假裝清單就是整台電腦。

視窗只保留一個自己的檔案:你離開時清單的版面配置,位於 %APPDATA%\BetterWindowsServices 下。快照會儲存到你在 bws snapshot create 中指定的位置,未指定時則儲存到目前目錄。

程式使用英文介面。視窗會讀取放在它旁邊的語言檔案 languages\gui.<code>.json,並依 Windows 的語言選擇,沒有切換開關。因此翻譯是一項無需重新建置就能加入的貢獻:CONTRIBUTING.md 說明了方法。

防毒軟體與 EDR

這個工具做的是系統管理員對服務做的事,其中一部分正是資訊安全軟體所監視的行為。

它會停止和啟動服務,可以結束服務背後的處理程序,並讀取每個服務的安全性描述元和所需特殊權限。如果某個 EDR 把結束 svchost.exe 的處理程序標記出來,那它是在履行職責,而這裡的強制停止看起來可能與之完全一樣。

它不會做的事,便於你核對這一說法:它不會向任何處理程序注入任何內容,不會封裝或混淆任何內容,不會安裝服務或驅動程式,也不會留下任何執行中的內容,更不會建立任何網路連線。它以 GPL-3.0 開放原始碼,你可以自己建置這兩個可執行檔。

如果你的原則需要排除項目,請依檔案而不是依資料夾排除這兩個可執行檔。唯一值得與工具本身同樣小心對待的是快照檔案:它描述了整台電腦。

從原始碼建置

.NET 10 SDK,在 Windows 上。

git clone https://github.com/donislawdev/BetterWindowsServices
cd BetterWindowsServices
dotnet build BetterWindowsServices.slnx -c Release
dotnet test BetterWindowsServices.slnx -c Release

有些測試會讀取它所執行的電腦上的真實服務控制管理員,並把這個工具的輸出與 sc.exe 的輸出進行比較。這些測試是唯讀的。發行版本所帶的單一檔案可執行檔來自下面這兩次發佈,每次都產生一個內含執行階段的檔案:

dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true

它們會以 bws.exe 和 BetterWindowsServices.exe 的名稱出現在各專案的 bin/Release/.../win-x64/publish/ 下。旁邊的 .pdb 檔案是偵錯符號,執行時並不需要它們。

執行成本

在一台有 804 個服務的電腦上測得。你的數字會有所不同:服務數量、磁碟和處理器都會影響結果。

大約五分之一秒

bws list 讀取整台電腦所需的時間。

大約 19 MB

同一台電腦上命令列佔用的記憶體。