皆さん、こんにちは。
今回は、以前紹介した、Surface Laptop for Business 13.8in 8th Ed Snapdragon に搭載されているプライバシー スクリーンについて取り上げたいと思います。
Surface Laptop for Business 13.8in 8th Ed Snapdragon にはプライバシー スクリーン搭載モデルがあります。(Intel 搭載モデルにもプライバシー スクリーン搭載モデルがあります。)
以前の記事でも紹介したように、以下のモデルで搭載されています。
今回の記事では、このプライバシー スクリーンに焦点を当てたいと思います。
プライバシー スクリーン搭載モデルでは、内蔵のプライバシー スクリーンが搭載されています。この内蔵プライバシー スクリーンは、アンチグレア (反射防止、映り込み防止) の内蔵プライバシー スクリーンとなり、Surface デバイスにおいては、初めての搭載となります。
ポイントは、この内蔵プライバシー スクリーンはソフトウェアによる制御が可能です。具体的には、[F1] キーによる操作だけでなく、レジストリ値による制御が可能です。また、Microsoft Intune 等の MDM から制御出来るように、OMA-URI も用意されています。この辺りを詳しく見ていきましょう。
<レジストリ値によるプライバシー スクリーン制御>
Surface Laptop for Business 13.8in 8th Ed Snapdragon では、プライバシー スクリーンを制御するためのレジストリ値が追加されています。
場所 : HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Surface
名前 : SurfaceIntegratedPrivacyScreenSetting
種類 : REG_DWORD
データ :
0 (既定でプライバシー スクリーンがオフ、ユーザーが [F1] によりオンオフ可能)
1 (既定ではプライバシー スクリーンがオン、ユーザーが [F1] によりオンオフ可能)
2 (強制的にプライバシー スクリーンがオン、ユーザーが [F1] によりオンオフ不可)
※ ユーザーが最後に選択したプライバシー スクリーンの状態 (オン/オフ) の設定は再起動またはスリープ解除後も保持される。
もし、レジストリ値を “2” に設定した場合に、[F1] を選択した場合に、どのような動作になるかというと、下記の表示がされます。
画面下部のタスク バーの上くらいに、[プライバシー スクリーンは所属している組織によって管理されています] と表示され、プライバシー スクリーンをオフに出来ない状態になります。
<Microsoft Intune によるプライバシー スクリーンの制御 (OMA-URI)>
プライバシー スクリーンは、OMA-URI が用意されているので、Microsoft Intune でも制御が可能です。
Microsoft Learn には、OMA-URI の設定内容は下記の記載のみだったため、本ブログ記事で実際のやり方について紹介します。
- Microsoft Intune 管理センターを開きます。
- [デバイス] > [プラットフォーム別] > [Windows] を開きます。
- [デバイスの管理] > [構成] を開きます。
- 画面右上部から [作成] > [新しいポリシー] を選択します。
- [プラットフォーム] を [Windows 10 以降] にして、[プロファイルの種類] を [テンプレート] に選択をして、下部から [カスタム] を選択して、[作成] を選択します。

- [名前] を適宜入力して、[次へ] を選択します。

- [構成設定] にて右上の [追加] を選択します。

- [行の追加] にて下記の設定を入力して、[保存] を選択します。
名前 : Surface_ADMX
OMA-URI: ./Device/Vendor/MSFT/Policy/ConfigOperations/ADMXInstall/Surface/Policy/SurfaceAdmx
データ型 : 文字列
値 : 下記の値
下記の値は、Surface ADMX ファイル (Surface.admx) をそのままコピーしています。
Surface.admx はメモ帳や Visual Studio Code で閲覧出来ます。
<?xml version="1.0" encoding="utf-8"?> <!-- (c) 2015 Microsoft Corporation --> <policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" revision="1.0" schemaVersion="1.0" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"> <policyNamespaces> <target namespace="Surface.Policies" prefix="Surface" /> </policyNamespaces> <resources minRequiredRevision="1.0" /> <categories> <category name="SurfaceCategory" displayName="$(string.SurfaceCategory)"> </category> <category name="Surface_DiagnosticData" displayName="$(string.Surface_DiagnosticData)"> <parentCategory ref="SurfaceCategory" /> </category> <category name="Surface_PrivacyScreen" displayName="$(string.Surface_PrivacyScreen)"> <parentCategory ref="SurfaceCategory" /> </category> </categories> <policies> <policy name="SurfaceDiagnosticDataSetting" class="Machine" displayName="$(string.SurfaceDiagnosticDataSetting)" explainText="$(string.SurfaceDiagnosticDataSetting_Help)" presentation="$(presentation.SurfaceDiagnosticData_Presentation)" key="Software\Policies\Surface" valueName="SurfaceDiagnosticDataSetting"> <parentCategory ref="Surface_DiagnosticData" /> <supportedOn ref="SUPPORTED_Windows_10_0_20H1_NOSERVER" /> <elements> <enum id="SurfaceDiagnosticDataSetting" valueName="SurfaceDiagnosticDataSetting" required="true"> <item displayName="$(string.SurfaceDiagnosticDataSetting_0)"> <value> <decimal value="0" /> </value> </item> <item displayName="$(string.SurfaceDiagnosticDataSetting_1)"> <value> <decimal value="1" /> </value> </item> </enum> </elements> </policy> <policy name="EndUserSurfaceDiagnosticDataSettingManagement" class="Machine" displayName="$(string.EndUserSurfaceDiagnosticDataSettingManagement)" explainText="$(string.EndUserSurfaceDiagnosticDataSettingManagement_Help)" key="Software\Policies\Surface" valueName="EndUserSurfaceDiagnosticDataSettingManagement"> <parentCategory ref="Surface_DiagnosticData" /> <supportedOn ref="SUPPORTED_Windows_10_0_20H1_NOSERVER" /> <enabledValue> <decimal value="1" /> </enabledValue> <disabledValue> <decimal value="0" /> </disabledValue> </policy> <policy name="SurfaceIntegratedPrivacyScreenSetting" class="Machine" displayName="$(string.SurfaceIntegratedPrivacyScreenSetting_Name)" explainText="$(string.SurfaceIntegratedPrivacyScreenSetting_Explain)" presentation="$(presentation.SurfaceIntegratedPrivacyScreenSetting)" key="Software\Policies\Surface" valueName="SurfaceDisplayPrivacySetting"> <parentCategory ref="Surface_PrivacyScreen" /> <supportedOn ref="SUPPORTED_Windows_10_0_20H1_NOSERVER" /> <elements> <enum id="SurfaceIntegratedPrivacyScreenSetting_Enum" valueName="SurfaceIntegratedPrivacyScreenSetting"> <item displayName="$(string.DefaultOff)"> <value> <decimal value="0" /> </value> </item> <item displayName="$(string.DefaultOn)"> <value> <decimal value="1" /> </value> </item> <item displayName="$(string.ForceOn)"> <value> <decimal value="2" /> </value> </item> </enum> </elements> </policy> </policies> </policyDefinitions>
- 更に [追加] を選択します。

- [行の追加] にて下記の設定を入力して、[保存] を選択します。
名前 : SurfaceIntegratedPrivacyScreenSetting
OMA-URI: ./Device/Vendor/MSFT/Policy/Config/Surface~Policy~SurfaceCategory~Surface_PrivacyScreen/SurfaceIntegratedPrivacyScreenSetting
データ型 : 文字列
値 : 下記の値
(今回は、2 (強制的にプライバシー スクリーンがオン、ユーザーが [F1] によりオンオフ不可) を設定)
<enabled/><data id="SurfaceIntegratedPrivacyScreenSetting_Enum" value="2"/>
- 正しく追加した内容が追加されたことを確認して、[次へ] を選択します。

- [スコープ タグ] は今回は既定のまま、[次へ] を選択します。

- [割り当て] にて、今回の構成を適用するグループを選択して、[次へ] を選択します。

- [適用性ルール] で今回はそのまま、[次へ] を選択します。

- [レビューと作成] にて、設定内容が正しいことを確認して、[作成] を選択します。

- 以上で管理者側の設定は完了です。
- クライアント側でポリシーの同期をして、設定が反映されたかを確認します。
- Microsoft Intune からポリシー適用されると、下記の表示がされました。

- レジストリ値も反映されています。
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Surface
SurfaceIntegratedPrivacyScreenSetting

<補足>
上記で紹介した、OMA-URI を用いた制御のやり方ですが、自身で検証した際は最初にはまりました。具体的には、Microsoft Learn には OMA-URI の値しか記載が無かったので、それ以外の情報は調べる必要がありました。
いくつかポイントを記載しますね。
まず、初回に構成した時に、OMA-URI だけを下記の形で配布したのですが、結果はエラーとなりました。
イベント ログを見ると、[指定されたファイルが見つかりません。] になりました。
そこで、何かのファイルが足りないと思い、ADMX ファイルのインポートが必要と思いつきました。その過程で、OMA-URI にて ADMX を取り込む方法を見つけたという経緯です。
その後も、実際の OMA-URI (./Device/Vendor/MSFT/Policy/Config/Surface~Policy~SurfaceCategory~Surface_PrivacyScreen/SurfaceIntegratedPrivacyScreenSetting) を指定する際のお作法なども何度かトライして無事成功しました。
具体的には、<enabled/><data id=”SurfaceIntegratedPrivacyScreenSetting_Enum” value=”2″/> の記載ですね。ADMX 内の ID を見て、SurfaceIntegratedPrivacyScreenSetting_Enum を見つけました。
<個人的な希望>
現時点でのポリシーで制御出来るパターンは、上記でも紹介したように 3 パターンです。ただ、折角ソフトウェアによる制御が出来るので、例えばですが、社内向け Wi-Fi の SSID (BSSID) に接続している時は、エンド ユーザーが自由にプライバシー スクリーンを制御出来る状態にして、それ以外のネットワークに接続されている場合やネットワークに接続されてない場合は、強制的にプライバシー スクリーンを有効化する等の制御が出来ると面白いと思いました。
仮に上記のアイディアを実現しようとした場合、Wi-Fi の切り換えはタスク スケジューラー等で検知出来るとしても、プライバシー スクリーンを強制的にオフにするレジストリの値が現在はありません。なので、プライバシー スクリーンを強制的にオンに出来ても、オフにするのはエンド ユーザーが [F1] キーを押下しないと出来ず、自動化が出来ない状況です。
ソフトウェア制御出来るので、今後のエンハンスメントに期待したいところです。
<参考情報>
Surface 統合プライバシー画面の概要 – Surface | Microsoft Learn
Surface 統合プライバシー画面のポリシー設定 – Surface | Microsoft Learn
<まとめ>
今回は、Surface Laptop 第 8 世代で初めて搭載された、プライバシー スクリーン機能について取り上げました。
ソフトウェア制御出来る部分はなかなか面白いのかなと思いました。IT 管理者目線で見ると、集中管理の機構があることは嬉しいですね。ただし、プライバシー スクリーンを強制にするとエンド ユーザーからの不満が来る可能性もあるので難しいところです。とはいえ、単なるハードウェアだけで制御するプライバシー スクリーンではなく、ソフトウェアによる制御も出来る点はこれからの機能拡張も可能なのでとても魅力的と感じました。
今回の検証記事を書くのにあたり、<補足> でも記載しましたが、結構時間をかけ検証し手こずりました。最終的にはうまく動作したのでとても安心しました。この記事が、Surface Laptop 第 8 世代のプライバシー スクリーン搭載モデルを企業や組織に導入する際に役立てていただければとても幸いです。
Surface Laptop for Business 13.8in 8th Ed Snapdragon の検証記事は今後も公開したいと思いますので、ご覧いただけますと幸いです。










