• #Stream Deck
  • #Windows Terminal
  • #PowerShell
  • #Windows
  • #UWP
開発メモ

Stream DeckのプロファイルにWindows Terminal/PowerShellを登録できない問題

結論

Stream Deckのアプリケーション連動プロファイルでWindows Terminal(wt.exe)を指定するのは難しい。

理由:

  • wt.exeWindowsApps フォルダ内にあるUWPアプリのスタブ
  • Stream Deckからはアクセス権限の制限で参照できない
  • 実際のプロセス WindowsTerminal.exe も同様に保護されている

問題の状況

Stream Deckには「アプリケーション連動プロファイル」機能がある。特定のアプリがアクティブになると、自動的にプロファイルが切り替わる便利な機能だ。

Stream Deckのプロファイル設定画面

PowerShell用のプロファイルを作り、アプリケーションとして登録しようとした。

wt.exe を指定しようとした場合

Stream Deckの「App/ファイル」欄で wt を指定すると、パスが自動補完される。

wt.exeのパス表示

しかし、このファイルを選択しようとすると「ファイルにアクセスできません」エラーが発生する。

wt.exeアクセス拒否エラー

WindowsApps フォルダの権限

wt.exeC:\Users\<user>\AppData\Local\Microsoft\WindowsApps\ に存在するが、これはUWPアプリへのスタブ(起動用のリンク)だ。

WindowsApps フォルダのセキュリティ設定を確認すると、特殊な保護がかかっている。

WindowsAppsのセキュリティ詳細設定

項目内容
所有者TrustedInstaller(システム専用)
通常ユーザー読み取りと実行のみ(条件付き)
条件WIN://SYSAPPID = UWPアプリ経由でのみアクセス可

この権限を変更すればアクセスできるが、以下のリスクがある:

  • Windows Updateで Store アプリの更新が失敗する可能性
  • セキュリティ上の保護が外れる
  • 他の Store アプリに影響する可能性

権限変更は推奨しない。

代替案の検討

案1: pwsh.exe を直接指定

PowerShell 7 本体を直接指定する方法。

C:\Program Files\PowerShell\7\pwsh.exe

問題点: pwsh.exe を直接起動すると、Windows Terminalの設定(開始ディレクトリなど)が効かない。

pwsh.exeを直接起動した場合

カレントディレクトリが C:\Program Files\PowerShell\7\ になってしまう。

この問題については Stream DeckでWindows Terminal(PowerShell 7)を任意のディレクトリで開く方法 で詳しく解説している。

案2: プロセス名で認識させる

フルパスではなく、プロセス名 WindowsTerminal だけで認識されるか試す方法。

Stream Deckのアプリケーション欄にプロセス名を直接入力してみる価値はある。

案3: プロファイル連動を諦める

アプリケーション連動は使わず、手動でプロファイルを切り替える方法。

Stream Deckのボタンでプロファイル切替アクションを設定すれば、1タップで切り替えられる。

まとめ

方法結果
wt.exe を指定アクセス拒否エラー
WindowsTerminal.exe を指定同様にアクセス拒否
WindowsAppsの権限変更非推奨(システムに影響)
pwsh.exe を指定動くがWindows Terminalの設定が効かない
プロセス名で指定要検証
手動切替確実に動作

Stream DeckのプロファイルでWindows Terminalを認識させるには、UWPアプリの制限を回避する必要がある。現時点では手動切替が最も確実な方法だ。