SoundDesk

Windows 系統匣工具

每個程式一個音量, 一次點擊完成。

Chrome 30%、Teams 70%、Spotify 20%。不必每次開啟音量混音程式逐一調整,一個設定檔就能全部還原。系統匣選單兩次點擊,控制台裡一個滑桿。

Windows 10 · 11免安裝,單一執行檔對外連線預設關閉

點擊系統匣圖示開啟的控制台。同樣的值也能直接從選單修改。

能做什麼

過去在音量混音程式裡做的事,現在從系統匣兩次點擊完成。

01

各程式的音量與靜音

把正在發出聲音的工作階段依程式歸併顯示。像 Chrome 這種有多個處理程序的程式也只佔一行。

02

每個程式不同的輸出裝置

遊戲走喇叭,Discord 走耳機。預設輸出裝置也能直接從選單切換,設定檔會把裝置一起儲存。

03

關掉程式再開啟依然保持

記住每個程式的音量,等那個程式 再次播放時 自動還原。拔插裝置、從睡眠喚醒,也會重新套用設定檔。

04

麥克風也在同一隻手裡

開會時最急的那個按鈕。 CtrlAltK 一次就能開關麥克風。

05

控制台

編輯設定檔、修改快速鍵、撰寫自動化規則,全都在介面裡完成。不必手動改設定檔案。

06

只有三樣會外傳

自動更新、匿名使用報告、開發者通知,僅此而已。 只有自動更新預設開啟,下載的檔案會先核對簽章再詢問是否安裝。控制台只監聽 127.0.0.1 上開放,還需要每次執行新產生的權杖才能開啟。

設定檔

情況變了,所有程式的音量也該跟著變。

預設內建三個,也可以把目前狀態直接存成新的設定檔。自動切換(程式啟動、裝置接上、時段)預設關閉。

內建設定檔
設定檔主音量程式設定
Work72%Chrome 30% · Teams 70% · Spotify 20%
Gaming80%Discord 65% · Spotify 15% · 瀏覽器靜音
Meeting60%Teams 80% · Zoom 80% · Chrome 20% · Spotify 靜音

快速鍵

當手已經放在鍵盤上時。

全部可以修改,若其他程式已佔用該組合鍵,會明確告知,而不是靜靜失敗。

  • CtrlAlt↑ 調高主音量
  • CtrlAlt↓ 調低主音量
  • CtrlAltM 靜音
  • CtrlAltK 麥克風靜音
  • CtrlAltS 彈出介面
  • CtrlAlt1–3 切換設定檔

應用程式路由

Windows 沒有寫進文件的那條路, 先驗證 再使用。

實測

「只讓這個程式走耳機」沒有公開 API。必須呼叫 Windows 設定應用程式所用的內部介面 Windows.Media.Internal.AudioPolicyConfig,而它的介面 ID 與 vtable 配置在每個組建裡都不同。SoundDesk 不靠猜測使用它。

危險的第一次呼叫放在 獨立處理程序裡執行,即使當掉系統匣也能存活;真正移動程式之後再用 Get 讀回,只有讀到同一個裝置才升級為「已驗證」。讀回結果不一致時,功能會自行關閉並開啟 Windows 設定頁面。

判定層級
狀態依據
verified確實移動了處理程序,讀回的 endpoint id 一致。若沒有任何程式在播放,自我檢測會用無聲串流替自己建立工作階段,用自己來驗證
probable無法造出可供讀回的對象 — 只能確認工廠啟用與 vtable 呼叫沒有當掉
unsupported自我檢測失敗,或呼叫成功但 Windows 未生效 → 引導至設定頁面

在 Windows 10 22H2 組建 19045 上 verified 確認 判定結果與組建編號一起儲存,系統更新後重新檢查

安全

即使從下載資料夾直接執行也安全。

這些是可攜式執行檔真正會遇到的問題。不是抽象的檢查清單,每一條都有對應的程式碼與測試。

威脅因應
DLL 劫持
放在 exe 旁邊的偽造 DLL
系統 DLL 只以 System32 絕對路徑載入。啟動時把 exe 所在資料夾與工作目錄從搜尋路徑中移除
Mutex 搶佔
其他工作階段搶先佔用名稱,阻止啟動
把單一執行個體物件放在 Local\ 命名空間
透過設定檔案注入 只有通過正規表示式驗證的 endpoint id 才會傳入 COM 呼叫
偽造記錄
在處理程序名稱裡塞入換行以插入假記錄
程式與裝置名稱先移除控制字元,再限制長度
沒有引號的自動啟動路徑 Run 機碼的值一律是用引號括起的絕對路徑,且只用 HKCU。
對控制台的越權操作
同一台電腦上的其他程式,或網頁
127.0.0.1 專用 + 每次執行產生新的 256 位元權杖 + Host 與 Origin 檢查。權杖在首次載入時變成 HttpOnly Cookie,從網址列消失

1270 項測試 · 涵蓋率 82% 包含放入偽造 DLL、實際驗證是否被擋下的實機測試 以 PROJECTTEAMFORYOU 進行程式碼簽署 · 執行前請核對發行者名稱

隱私

離開這台電腦的只有三樣,而且都寫在這裡。

程式名稱和工作階段資訊在本機處理,設定只是一個 JSON 檔案。 會連上網際網路的功能只有三個 —— 自動更新、匿名使用報告、開發者通知。手機遙控器在你親手開啟之前一直是關閉的,開啟後也只會在同一個私人網路內,把程式名稱顯示給已配對的手機。 只有自動更新預設開啟:先詢問是否有新版本,有就下載,再詢問是否安裝。只傳送執行中的版本號和語言,不傳送安裝 id,而且可以在控制台關閉。另外兩個在你開啟之前一直安靜。

設定檔案%APPDATA%\SoundDesk\config.json
記錄%APPDATA%\SoundDesk\sounddesk.log
自動更新預設開啟 —— 每次啟動一次,只有執行中的版本號和語言。不傳送安裝 id。新版本下載後會讓 Windows 核對簽章是否為 PROJECTTEAMFORYOU,安裝需要你點擊
匿名使用回報預設關閉 — 開啟後每天一次,送出隨機安裝 id、版本、Windows 組建、語言,以及三個計數
開發者通知預設關閉 —— 開啟後只傳送執行中的版本號和語言
絕對不會送出的內容程式名稱 · 裝置名稱 · 檔案路徑 · Windows 帳戶名稱
使用的 APIIMMDeviceEnumerator · IAudioSessionManager2 · ISimpleAudioVolume · IPolicyConfig · AudioPolicyConfig
自動啟動HKCU\Software\Microsoft\Windows\CurrentVersion\Run(選用)

自我檢測

在你的電腦上能不能用,直接問這個程式。

把自己的功能逐項放到真實音訊堆疊上跑一遍, 動過的都會還原。會發出聲音的變更根本不做 — 主音量是把目前的值原樣重寫一次,只證明呼叫路徑是通的。

指令檢查什麼
--selftest-audio 裝置 · 主音量 · 麥克風 · 各程式的音量/靜音/路由 · 設定檔 · 全域快速鍵。沒有程式在播放時,路由用它自己的無聲工作階段來驗證
--selftest-panel 打包後的執行檔是否真的能提供控制台
--report 以 JSON 輸出裝置、工作階段與設定檔現況

這台電腦上的結果

OK  各程式音量(firefox.exe 100% → 42% → 還原)
OK  各程式靜音
OK  各程式輸出路由(firefox.exe → ASUS VZ279 → 還原)
OK  預設裝置切換 · 設定檔 · 全域快速鍵
—   麥克風(本機沒有輸入裝置)

11 passed, 0 failed, 2 skipped — Windows 10 22H2 組建 19045

在哪裡都一樣

用你的語言,在你的電腦上。

同一套設定在家裡與公司通用,用你的語言閱讀,需要時從巨集呼叫。

01

12 種語言

跟隨 Windows 顯示語言。也可以自己選,改了之後控制台與系統匣選單無需重新啟動就地切換。

한국어 · English · 日本語 · 简体中文 · 繁體中文 · Español · Português · Français · Deutsch · Русский · Italiano · Tiếng Việt

02

家裡與公司,同一套設定

把設定檔、快速鍵、規則匯出成一個檔案,在另一台電腦上匯入。裝置依 名稱 比對 — 同一副耳機在每台電腦上的 id 都不同,直接複製檔案會讓路由靜靜消失。本機沒有的裝置會告訴你名稱。

03

從巨集呼叫

在 Stream Deck 按鈕或一行 AutoHotkey 裡直接使用。系統匣開著或沒開都能運作,也不會再跳一個圖示。有變化回傳結束碼 0,什麼都沒符合回傳 1。

SoundDesk.exe --set-app chrome.exe=25
SoundDesk.exe --profile Gaming
SoundDesk.exe --list apps

安裝

一個檔案。沒有安裝程式。

SoundDesk.exe 放在任何你喜歡的位置執行,系統匣就會出現圖示。不需要 Python。

下載 SoundDesk.exe 下載 zip

22.1 MB · 已程式碼簽署exe SHA-256zip SHA-256

如果瀏覽器或公司電腦攔截執行檔,請下載 zip。裡面是同一個檔案,兩者的雜湊值都已提供。

再看一次

瀏覽器可能會攔截它,提示「可疑下載」。這表示下載過它的人還很少,而不是檔案有問題。Chrome 請在下載清單點 ⋮ 選擇「繼續」;若是 Windows 攔截,選「其他資訊」→「執行」。真正能驗證的只有兩點:發行者名稱是否為 PROJECTTEAMFORYOU,以及上面的 SHA-256 是否與你收到的檔案一致。下載的人多了,這個提示就會消失。

Windows 10 1803 以上單一執行檔無需系統管理員權限附上 SHA-256

變更紀錄

什麼時候改了什麼。

時間均為韓國標準時間(KST)。完整紀錄在儲存庫的變更紀錄檔中。

  1. v1.7.0 最新

    • 手機遙控器。同一 Wi-Fi 下的 Android 手機(SoundDesk Remote)可以控制音量、靜音、輸出裝置和設定檔。預設關閉;開啟後,只有用 QR 碼配對過的手機才能連線,而且只能來自私人網路內部。
    • 隱私權政策和使用條款已提供 12 種語言版本。
  2. v1.6.0

    • 自動更新。有新版本時先下載,再詢問是否安裝。預設開啟,可在設定中關閉。
    • 下載的檔案必須同時通過公開雜湊和簽章核對,安裝的那一刻還會再核對一次簽章。
  3. v1.5.0

    • 主音量、麥克風以及每個正在播放的程式下方,都會畫出目前的聲音大小。
    • 指定單一程式的全域快速鍵。開會時只靜音某一個程式,不必打開控制台。
    • 自動調低 —— 選定的程式發出聲音時調低其他程式,安靜後再恢復。
  4. v1.4.0

    • 提供執行檔和 zip 兩種。裡面的位元組相同,各自附有雜湊值。
    • 程式知道自己的網址 —— 從系統匣選單或控制台的「關於」開啟。
    • 到達頁統一為一套字體,檔案從 870KB 降到 225KB。
  5. v1.3.0

    • 設定檔現在可以宣告「這個程式跟隨預設裝置」。
    • 本頁面以十二種語言發布。