
Windows 通知機能向け C# ユーティリティ
これは、Windows Notification Facility (WNF) ツールのリポジトリです。 現在、Alex Ionescu (@aionescu) と Gabrielle Viala (@pwissenlit) によって開発された wnfun 内のツールの C# ポートがアップロードされています。 Windows Notification Facility 用の追加ツールを開発した場合は、ここにアップロードします。
このツールは、WNF State Names に関する情報をダンプまたは操作します。 これは、wnfdump.exe および WnfDump.py に相当します。 元のツールからいくつかの更新を加えました (例外処理、Well-Known State Name、新しい WNF_DATA_SCOPE メンバー)。
ホスト上のすべての Well-Known、Permanent、Persistent WNF State Names の情報を取得するには、-d (--dump) フラグを指定して実行します:```
PS C:\Dev> .\SharpWnfDump.exe -d
| WNF_WEBA_CTAP_DEVICE_STATE | S | W | N | RW | I | 0 | 12 | 0 | | WNF_WEBA_CTAP_DEVICE_CHANGE_NOTIFY | S | W | N | RW | I | 0 | 4 | 0 | | WNF_PNPA_DEVNODES_CHANGED | S | W | N | RO | U | 0 | 0 | 11 |
--snip--
システムで使用されている状態名のみを表示するには、`-u` (`--used`) フラグを設定します。
このフラグは `-d` および `-b` オプションに適用できます:```
PS C:\Dev> .\SharpWnfDump.exe -d -u
| WNF State Name [WellKnown Lifetime] | S | L | P | AC | N | CurSize | MaxSize | Changes |
----------------------------------------------------------------------------------------------------------------------
| WNF_PNPA_DEVNODES_CHANGED | S | W | N | RO | U | 0 | 0 | 140 |
| WNF_AUDC_RENDER | S | W | N | RO | U | 4096 | 4096 | 7 |
| WNF_AUDC_CAPTURE | S | W | N | RO | U | 4096 | 4096 | 1 |
| WNF_AUDC_SPATIAL_STATUS | S | W | N | RO | U | 4096 | 4096 | 3 |
--snip--
セキュリティ記述子情報を取得したい場合は、-s (--sid) フラグを設定してください:```
PS C:\Dev> .\SharpWnfDump.exe -d -s
| WNF_WEBA_CTAP_DEVICE_STATE | S | W | N | RW | I | 0 | 12 | 0 |
D:(A;;CCDC;;;SY)(A;;CCDC;;;BA)(A;;CCDC;;;S-1-5-80-242729624-280608522-2219052887-3187409060-2225943459)(A;;CC;;;AU)(A;;CC;;;AC)
| WNF_WEBA_CTAP_DEVICE_CHANGE_NOTIFY | S | W | N | RW | I | 0 | 4 | 0 |
D:(A;;CCDC;;;SY)(A;;CCDC;;;BA)(A;;CCDC;;;S-1-5-80-242729624-280608522-2219052887-3187409060-2225943459)(A;;CC;;;AU)(A;;CC;;;AC)
| WNF_PNPA_DEVNODES_CHANGED | S | W | N | RO | U | 0 | 0 | 11 |
D:(A;;CC;;;BU)(A;;CCDC;;;SY)
--snip--
If you want to retrieve buffer data, set `-v` (`--value`) or `-r` (`--read`) flag.
These flags can be used with `-s` flag:```
PS C:\Dev> .\SharpWnfDump.exe -d -v
| WNF State Name [WellKnown Lifetime] | S | L | P | AC | N | CurSize | MaxSize | Changes |
----------------------------------------------------------------------------------------------------------------------
| WNF_WEBA_CTAP_DEVICE_STATE | S | W | N | RW | I | 0 | 12 | 0 |
| WNF_WEBA_CTAP_DEVICE_CHANGE_NOTIFY | S | W | N | RW | I | 0 | 4 | 0 |
--snip--
| WNF_AUDC_RENDER | S | W | N | RO | U | 4096 | 4096 | 1 |
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 | 01 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ........ ........
00000010 | 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ........ ........
00000020 | 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 | ........ ........
--snip--
ホスト上のすべての一時WNF状態名の情報を取得するには、-b (--brut) フラグを指定して実行します:```
PS C:\Dev> .\SharpWnfDump.exe -b
| 0x41C64E6DA3AC3845 | S | T | N | RW | A | 8 | ? | 1 | | 0x41C64E6DA3AC4845 | S | T | N | RW | A | 8 | ? | 1 | | 0x41C64E6DA3AC6845 | S | T | N | RW | A | 8 | ? | 1 |
--snip--
The `-b` (`--brut`) フラグは `-v` (`--value`) または `-r` (`--read`) フラグと一緒に使用できますが、`-s` (`--sid`) フラグとは併用できません。
`--dump` または `--brut` オプションの結果から得られる表の各列の意味は次のとおりです:
| Column Name | Description |
| :--- | :--- |
| `WNF State Name` | WNF State Name がここに出力されます |
| `S` | WNF State Name のデータ スコープ。表示されるアルファベットの意味は次のとおりです:<br><br>+ `S` : System Scope<br>+ `s` : Session Scope<br>+ `U` : User Scope<br>+ `P` : Process Scope<br>+ `M` : Machine Scope<br>+ `p` : Physical Machine Scope |
| `L` | WNF State Name のライフタイム。表示されるアルファベットの意味は次のとおりです:<br><br>+ `W` : Well-Known<br>+ `P` : Permanent<br>+ `V` : Persistent (Volatile)<br>+ `T` : Temporary |
| `P` | WNF State Name が永続かどうかを表示します:<br><br>+ `Y` : はい<br>+ `N` : いいえ |
| `AC` | WNF State Name のアクセス制御:<br><br>+ `RW` : 読み取りおよび書き込み可能<br>+ `RO` : 読み取り専用<br>+ `WO` : 書き込み専用<br>+ `NA` : 読み取りおよび書き込み不可 |
| `N` | サブスクライバーの有無を表示します:<br><br>+ `A` : サブスクライバーあり<br>+ `I` : サブスクライバーなし<br>+ `U` : 不明 |
| `CurSize` | WNF State Name に使用されている現在のバッファ サイズを表す数値です。 |
| `MaxSize` | WNF State Name に使用できる最大バッファ サイズを表す数値です。 |
| `Changes` | 更新された回数を表す数値です。 |
特定の WNF State Name に関する情報を取得する場合は、次のように `-i` (`--info`) オプションを指定して `SharpWnfDump.exe` を実行します:```
PS C:\Dev> .\SharpWnfDump.exe -i WNF_SHEL_APPRESOLVER_SCAN
| WNF State Name | S | L | P | AC | N | CurSize | MaxSize | Changes |
----------------------------------------------------------------------------------------------------------------------
| WNF_SHEL_APPRESOLVER_SCAN | S | W | N | RW | A | 4 | 4 | 1 |
-i(--info)オプションは、-v(--value)、-r(--read)、-s(--sid)フラグと併用できます:```
PS C:\Dev> .\SharpWnfDump.exe -i WNF_SHEL_APPRESOLVER_SCAN -s -v
| WNF_SHEL_APPRESOLVER_SCAN | S | W | N | RW | A | 4 | 4 | 1 |
D:(A;;CC;;;WD)(A;;CCDC;;;AU)(A;;CCDC;;;AC)
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F