2025/05/11追記
いつの間にか Exact Audio Copy v1.7 / 1.8 が出ていた。更新止まってそうだったので書き忘れていたが、本稿を書いた時点での最新バージョンは v1.6 であった。
公式の What’s new によれば、 v1.7 で AccurateRip 周りが本体に統合されたみたいなことが書いてある気がするので、このパッチを当てる必要はなくなっているはず。ちなみに v1.8 は v1.7 のデグレ解消という感じのようなので何も考えず v1.8 を使っておけば良いということになる。
ただし、 v1.7 以降 freedb のサポートが削られているので、これが困るというという場合には v1.6 を使い続ける必要がある。たぶん freeDB.org が止まったことからサポート切ったんだと思うんだけど、 freedb 日本語 とか使ってたら関係ない気がするし何で削ったんだ…
症状
Windows11 環境で EAC が起動しない。starting的な画面も出ずプロセスだけが残り続ける状態になる。
調査
EAC 起動時に自動的に読み込まれる AccurateRip.dll が Application Data ディレクトリのパスを取得するために SHGetSpecialFolderLocation を呼んでいるのだが、これが失敗することで正常に起動しない状況となっていた。
SHGetSpecialFolderLocation の引数として CSIDL_APPDATA
が指定されているが、これを CSIDL_COMMON_APPDATA
に書き換えることでとりあえず起動できるようになった( CSIDL_*
の値については 参考ページ1 と 参考ページ2 を参照した)。
以下気づいたことメモ
CSIDL_LOCAL_APPDATA
とかでは起動しない- MS資料によれば
CSIDL_COMMON_APPDATA
でC:\Documents and Settings\username\Application Data
的なパスが取得できるはずだが、実際に取得できているパスはC:\Users\All Users
- Documents and Settings とかかなり昔に滅んでるし、そもそも SHGetSpecialFolderLocation 自体が非推奨らしいので Win11 に来てとうとう動かなくなった、という感じなんだろう
- 手元の環境では7月ぐらいまでは Win11 でも普通に起動していた形跡があるので、それ以降のアップデートで動かなくなったのかなあと想像してる

調査の結果起動するようになった感動のシーン
具体的対応手順
EAC インストールディレクトリにある AccurateRip.dll を適当なバイナリエディタで開き、アドレス 0000BA6F
にある 1A
を 23
に書き換える。

図中選択部を 23 に書き換える