PR

Windows Hello 顔認証が登録できない問題の原因と解決方法

アプリケーション

Cisco Desk Camera 4Kの落とし穴と、格安ウェブカメラで解決した方法

ハンズフリーで認証できるWindows Helloの顔認証はとても便利です。Windowsのログイン時のほか、決済や銀行・証券会社サイトを利用する際の認証でもWindows Hello 顔認証を使っています。パスワードもPINも入力せず、席に座るだけでログインできる環境は一度慣れると戻れません。
顔認証で使用しているカメラはCisco Desk Camera 4K。Dell U4025QWの内蔵KVM経由で2台のPCに繋いで使っています。

Google Chromeのパスキーも顔認証で一発!Windows Helloに対応したCisco Desk Cameraが超便利
Windows Helloを使いたくて、Lenovo 500 Webカメラを使っていましたが、いかんせん画質があまり良くないことと、なによりも「Webカメラなのにマイクがない」という割り切った仕様なのがネックとなり、買い換えることにしました。選定にあたり、Windows Helloに対応していること…

ところがある日、顔認証の精度が急に悪くなりました。何度もやり直さないと認識しないし、顔の位置が少しずれるだけで認証が通りません。とにかくストレスが溜まるので困っていたので、一度顔認証データを削除して、登録しなおせば直るだろうと思って登録データを削除したのですが、これが地獄の始まりでした。

二度と登録できなくなったのです。

結論から書くと、原因はCisco Desk Camera 4KがWindows 11の最近のバージョンに対応しきれていないことでした。そして解決策は、別の安いウェブカメラを一時的に使って顔認証データを登録することです。

同じ症状で困っている方は少なくないと思うので、症状・原因・解決方法をまとめておきます。

顔認証登録の際にPINを入れた直後にウィンドウが消える

コントロールパネルを開き、顔認証の登録を試みると、こうなります。

  1. 設定 → アカウント → サインイン オプション → 顔認識(Windows Hello)→ セットアップ を選択
  2. PIN入力画面が表示されるのでPINを入力
  3. 顔登録用のウィンドウが開く
  4. カメラの赤外線LEDが点滅を始める
  5. 数秒後、LEDの点滅が止まると同時にウィンドウが勝手に消える
  6. 登録は完了しない

エラーメッセージは一切出ません。ただウィンドウが消えるだけです。何度やっても同じでした。

本来であればこのウィンドウにはカメラの画像が表示され、顔認識を行うのですが、このようにキャンセルボタンのみが存在する画面が表示された1~2秒くらい後に、前触れ無くウィンドウが消えて、何も起こりません。

原因の切り分けでわかったこと

ここは本題ではないので手短に書きます。

最初はWindows側の問題を疑って、かなり細かいところまで調べました。カメラのドライバ、Media Foundationのコーデック構成、Windowsカメラフレームサーバー、Hello顔認証エンジン、生体認証データベース、セキュリティソフトの干渉、Windows Updateの影響、GPUのハードウェアエンコーダ設定などなど。クラッシュしたプロセスのメモリダンプまで取って解析したのですが、問題の解決には至りませんでした。

結果としてわかったのは、Windows側は何も壊れていないということでした。

  • カメラは正常に認識され、カラー映像も赤外線(IR)映像も問題なく取得できる
  • 顔認証用のIRストリームもWindowsから正しく認識されている
  • 必要なコーデックや変換モジュールもすべて正常に動作する

にもかかわらず、登録処理を担当する BioEnrollmentHost.exe というプロセスだけが、顔認証登録の時だけ、カメラ映像の処理経路を組み立てる段階で MF_E_TOPO_CODEC_NOT_FOUND というエラーで失敗して落ちるという謎の現象が発生していました。

そして決定的だったのが、ハードウェア構成が全く構成の異なるもう1台のPCでも、同じカメラを繋いで顔認証を削除したら、まったく同じ症状が出たことです。インストールしているソフトもGPUも違う2台で同じ症状。共通しているのはWindows 11の最新バージョンであることと、Cisco Desk Camera 4Kという2点だけでした。

USBハブやKVMを疑ってPCのUSB端子に直結もしてみましたが、2台とも変化なしでした。

「認証」はできるが「登録」だけができない

調べていく中で、決定的に重要なことに気づきました。

Windows Helloの顔認証は、「新規登録(enrollment)」と「照合(verification)」で別の処理が動いています。 そして今回壊れていたのは、登録の処理だけでした。

実際、両方のPCとも1年以上前に登録した顔認証データでのログインは、ずっと問題なく動いており、認証自体は通っていました。壊れたのは、登録されていた顔認証データを消してしまった瞬間からです。

ということは登録さえ別の手段で通せば、あとはCiscoのカメラでログインできるのでは?

Windows Helloの顔認証データは、カメラ固有の情報ではなく「顔の生体情報」として保存されます。つまり、どのカメラで登録したかは、その後のログインに関係ないはずです。

この仮説を試すために、安いWindows Hello対応ウェブカメラを1台買ってみることにしました。

別のカメラで顔認証データを登録して、Ciscoに戻す

購入したのはMOERTEKの2K HDウェブカメラです。Windows Hello対応(赤外線カメラ搭載)で、実売価格も6,000円弱とかなり安価な製品です。

手順はいたってシンプルです。

  1. MOERTEKのカメラをPCに接続する(Ciscoのカメラは外しておく方が良い)
  2. 設定 → アカウント → サインイン オプション → 顔認識(Windows Hello)→ セットアップ
  3. 顔認証プロファイルを登録する ← ここが、Ciscoのカメラではどうしても通らなかった工程
  4. 登録が完了したら、MOERTEKのカメラを取り外す
  5. Cisco Desk Camera 4Kを接続し直す

これだけです。

結果は、あっさり成功でした。MOERTEKのカメラでは顔認証の登録が何の問題もなく完了し、その後カメラをCisco Desk Camera 4Kに戻したところ、普通に顔認証でログインできるようになりました。

半日以上かけて調べ回った問題が、数千円のウェブカメラ1台であっけなく解決したことになります。少し脱力しましたが、とにかく元の環境が戻ってきました。

MOERTEK 2K HD ウェブカメラについて

今回は「登録用の道具」として買ったので使い込んではいませんが、簡単に触れておきます。

  • Windows Hello対応(赤外線センサー搭載)
  • 2K解像度で、Web会議用としては必要十分な画質
  • USB接続で、ドライバのインストールは不要

画質はやはりCisco Desk Camera 4Kには劣りますが、一昔前の廉価ウェブカメラと比べるとかなり画質も上がっています。
「Windows Helloの顔認証だけが目的」であれば、安価な製品でも必要十分に機能する、というのが今回の実感です。少なくとも登録用としては完璧に仕事をしてくれました。

Amazonに掲載されている商品画像より一回り大きなサイズのカメラでした。今回は顔認証データの登録でしか使用しませんので、詳細な使用感のレビューはありません。

顔認証データが登録できない原因

正確な原因はMicrosoftとCiscoにしかわかりませんが、Windows 11 24H2以降でWindows Helloの顔認証まわりの要件が厳しくなったことが関係している可能性が高いと考えています。
私が2台のPCに顔認証データを登録したのは24H2導入以前です。

実は、まったく同じ症状の報告がCiscoの公式コミュニティに上がっています。同じCisco Desk Camera 4K、同じファームウェアバージョンで、「新しいPCでWindows Helloが動作しない」「Windows 11 24H2では動かない」という投稿です。

Windows Hello Login using Cisco Desk Camera 4K is not working – Cisco Community

そして、これはCiscoに限った話でもないようです。定番のLogicool BRIO 4Kでも、24H2で顔認証が設定できなくなるという報告がMicrosoftのQ&Aに上がっています。こちらは、ドライバを削除して「外部カメラまたは指紋リーダーでサインインする」設定をオフ→再起動→再接続→オンに戻す、という手順で復旧できたとのことです。

Can’t setup windows facial recognition sign in with my Logitech Brio 4k Stream – Microsoft Q&A

さらに、VAIOも24H2で顔認証が使えなくなる事象を公式FAQとして公開しています。こちらも「外部カメラまたは指紋リーダーでサインインする」の設定が鍵になっています。

[Windows 11][24H2] Windows Hello顔認証が利用できない – VAIO FAQ

背景として、Microsoftは「Enhanced Sign-in Security(強化サインインセキュリティ、ESS)」という仕組みを進めており、外部接続のカメラはESSの対象外という扱いになっています。

Windows Hello でサード パーティ製の指紋リーダーとカメラを使用する – Microsoft Support

外付けカメラでのWindows Hello自体が、Microsoftの中で優先度が低くなっているか、あるいは制限を強める方向にある中で、発売から年数が経ってファームウェア更新も止まっているカメラが取り残されている——という構図なのだと思います。

なお、私の環境ではESSは無効になっており、上記の「外部カメラまたは指紋リーダーでサインインする」の設定項目自体が表示されませんでした。そのため、これらの記事の手順はそのままでは適用できませんでしたが、症状が共通していることは確かです。

顔認証データを消すと、また同じことになる

今回の解決方法には、重要な注意点があります。

登録に使ったカメラは、絶対に処分しないこと

顔認証データを削除・再作成する必要が生じた場合、また同じ手順が必要になります。具体的には、以下のケースです。

  • Windows Helloの顔認証を削除した場合
  • PINをリセットした場合(顔認証データも無効になることがあります)
  • Windowsを再インストールした場合
  • 新しいユーザーアカウントを作成した場合

私は今回のカメラを「顔認証登録用の道具」として引き出しにしまっておくことにしました。数千円で買えるものですし、いざというときの保険としては安いものです。
もう一点。今使えている顔認証データを、気軽に削除しないこと。 私はこれで丸1日調査に時間を溶かしました。「精度が落ちたから登録し直そう」という何気ない判断が、そのまま詰みに直結します。

まとめ

Cisco Desk Camera 4Kを使っていて、Windows Helloの顔認証が登録できなくなった場合。

  • 原因はカメラ側。Windowsが壊れているわけではないので、初期化やクリーンインストールをしても解決しません
  • 壊れているのは「登録」だけで、「認証」は正常に動作します
  • 別のWindows Hello対応カメラで登録すれば、その後は元のカメラで顔認証ログインできます
  • 登録に使ったカメラは、再登録が必要になったときのために保管しておきましょう

今回は数千円のウェブカメラで解決しましたが、そもそもの話として、Cisco Desk Camera 4K自体は画質もマイクも良い優秀なカメラです。せっかくWindows Hello対応を謳っている製品なので、ファームウェアの更新で対応してくれるとありがたいのですが……。同様の症状でお困りの方の参考になれば幸いです。

もしCisco Desk Camera 4K以外のカメラでも同じ症状が出ている方は、まず「別のカメラで登録だけ済ませる」を試してみてください。カメラを問わず有効な回避策になる可能性があります。

【補足】技術的な確認内容

「原因はカメラ側で、Windowsは壊れていない」と書きましたが、その根拠として実際に確認した内容を残しておきます。
ここは完全に技術的な内容なので、興味のない方は読み飛ばしていただいて問題ありません。

クラッシュの中身を見る

まず、落ちているBioEnrollmentHost.exeのクラッシュダンプを取得して、中身を解析しました。

イベントログ上の例外コードは0xC000027B。これはSTATUS_STOWED_EXCEPTIONといって、本当のエラーを内側に包んだまま落ちていることを示すものです。つまりこのコード自体には情報がなく、包まれている中身を取り出す必要があります。

ダンプを解析して取り出した「本当のエラー」がこちらです。

HRESULT : 0xC00D5212  (MF_E_TOPO_CODEC_NOT_FOUND)
          「コンテンツをエンコードまたはデコードするための
            適切な変換が見つかりませんでした」

スタックトレース:
  combase.dll
  mfplat.dll
  MFCaptureEngine.dll   ← ここが発生源
  MFCaptureEngine.dll
  MFCaptureEngine.dll
  RTWorkQ.dll

MFCaptureEngine.dllは、Media Foundation(Windowsの映像処理基盤)のうち、カメラ映像の処理経路を組み立てる担当です。ここで「必要な変換が見つからない」と言って失敗していることが判明しました。
つまり、カメラから映像を受け取って顔認証エンジンへ渡すまでの処理経路(トポロジ)を構築する段階で詰まっているわけです。

カメラ側は正常だった

では本当に「変換が見つからない」のか。Media FoundationのAPIを直接呼び出して、カメラが何を出力しているのかを調べました。

stream 0 : カラー   68形式  MJPG / NV12 / YUY2  最大4096x2160
stream 1 : 顔認証    2形式  L8(8bit輝度=赤外線)576x432 / 640x480
stream 2 : 静止画    3形式

顔認証用のIRストリームはL8という標準的な形式で、きちんと存在しています。しかも実際にフレームを取得することにも成功しました。カラー映像もIR映像も、普通に読み出せます。

さらに、WindowsのカメラフレームサーバーがOSに登録している情報を見ると、こうなっていました。

FaceAuthInfo : face_auth_streamid=1, face_auth_caps=0x2

「stream 1が顔認証用ストリームである」と、Windows側は正しく認識できています。カメラが顔認証に対応していることも、どのストリームを使えばいいかも、把握できている状態です。

Windows側にも異常はなかった

念のため、変換モジュール側も個別に叩いて確認しました。

  • MJPEGデコーダ(MJPG→NV12): 正常に動作、出力形式もNV12/YUY2が取得できる
  • ビデオプロセッサ(NV12→RGB32、L8→NV12): いずれも正常に動作
  • カメラフレームサーバーの動作ログ: クラッシュ時も含めてすべて成功(hr=0x0)

このほか、Hello顔認証エンジン本体、生体認証テンプレートのデータベース、セキュリティソフトの干渉、GPUのハードウェアエンコーダ設定、Windows Updateの影響、グループポリシーによる制限なども一つずつ潰しましたが、いずれも異常なしでした。

認証に必要な機能はすべて揃っていて、それぞれ単体では正常に動く。にもかかわらず、それらを繋いで一本の処理経路にする段階でだけ失敗する。これが今回の症状の正体です。

唯一の手がかり

ひとつだけ、気になる痕跡がありました。カメラフレームサーバーのログを見ると、カメラを開いたときの構成が記録されています。

通常のアプリがカメラを開いたとき : ストリーム数 3(カラー+IR+静止画)
顔認証の登録処理が開いたとき     : ストリーム数 1(カラーのみ)  ← 直後にクラッシュ

顔認証の登録処理だけが、IRストリームを含まない構成でカメラを開いているように見えます。顔認証にIR映像は必須ですから、これでは処理経路を組み立てられず「必要な変換が見つからない」となるのも道理です。

ただし、なぜCiscoのカメラでだけこうなるのか、というところまでは特定できませんでした。カメラが返すディスクリプタ(自己申告する仕様情報)のどこかが、現在のWindowsが期待する形式と噛み合っていないのだろう、というのが調査結果からの推測です。

いずれにせよ、Windows側のどの機能も壊れていないため、OSの初期化やクリーンインストールでは解決しません。ここが今回一番重要な点です。同じ症状で「Windowsを入れ直そうか」と考えている方は、その前に別カメラでの登録を試してみてください。

このページで紹介している商品のセール情報を受け取ることができます。(Amazon限定)
通知が不要な場合はいつでもこのページで解除できます。 詳しくはこちら >

セール通知を受け取る

コメント

タイトルとURLをコピーしました