「パスワードの保存を禁止したい」「起動時のページを社内ポータルにしたい」といった要望は、端末を配る立場だと必ず出てきます。以前 ChromeとEdgeでパスワード保存を無効化する(レジストリ) で1つの設定を扱いましたが、実際には「どこに書けばどう効くのか」を理解していないと、効かなかったり、逆に利用者が変更できなくなって問い合わせが増えたりします。
この記事では、Chrome と Edge のポリシーをレジストリで配るときの考え方をまとめます。設定項目そのものより、置く場所による効き方の違いが本題です。

1. ポリシーを書く場所は3種類ある
Chrome と Edge は、決められたレジストリキーを起動時に読み込みます。同じポリシー名でも、書く場所で挙動が変わります。
| 書き込み先 | 効き方 |
|---|---|
HKLM\SOFTWARE\Policies\... | 全ユーザーに強制。利用者は変更できない |
HKCU\SOFTWARE\Policies\... | そのユーザーだけに適用 |
...\Policies\...\Recommended | 初期値として配る。利用者はあとから変更できる |
ブラウザごとのキーは次のとおりです。
Chrome : HKLM\SOFTWARE\Policies\Google\Chrome
Edge : HKLM\SOFTWARE\Policies\Microsoft\Edge
「強制」と「初期値」を意識せずに全部 HKLM の直下へ書くと、利用者が自分で変えられなくなります。設定画面には「組織によって管理されています」と表示され、項目がグレーアウトします。
セキュリティ要件として譲れないものは HKLM 直下、利便性のための既定値は Recommended、と使い分けるのが実務的です。
2. まず現状を確認する
配る前に、その端末に既にポリシーが入っていないかを見ます。読み取りだけなので管理者権限は不要です。
# ChromeとEdgeのポリシーキーを確認する
foreach ($p in 'HKLM:\SOFTWARE\Policies\Google\Chrome',
'HKLM:\SOFTWARE\Policies\Microsoft\Edge') {
if (Test-Path $p) {
Write-Host "$p"
# PS で始まる内部プロパティは除外して表示する
(Get-ItemProperty $p).PSObject.Properties |
Where-Object { $_.Name -notlike 'PS*' } |
ForEach-Object { " {0} = {1}" -f $_.Name, $_.Value }
} else {
Write-Host "$p : ポリシー未設定"
}
}
手元の端末ではどちらも未設定でした。
HKLM:\SOFTWARE\Policies\Google\Chrome : ポリシー未設定
HKLM:\SOFTWARE\Policies\Microsoft\Edge : ポリシー未設定
キーが存在しない=ポリシーが1つも配られていないという意味です。既存の設定がある端末に追加する場合は、上書きしないよう既存値を控えておきます。
3. よく使うポリシー
情シスでよく設定するものを挙げます。ポリシー名は Chrome と Edge で共通のものが多いので、同じ名前で両方のキーに書けば済みます。
| ポリシー名 | 型 | 内容 |
|---|---|---|
PasswordManagerEnabled | DWORD | パスワード保存を許可するか(0で禁止) |
BrowserSignin | DWORD | ブラウザへのサインイン(0で無効) |
SyncDisabled | DWORD | 同期の無効化(1で無効) |
RestoreOnStartup | DWORD | 起動時の動作(4で指定ページを開く) |
RestoreOnStartupURLs | 文字列(サブキー) | 起動時に開くURL |
ExtensionInstallBlocklist | 文字列(サブキー) | 拡張機能のブロック(* で全面禁止) |
ExtensionInstallAllowlist | 文字列(サブキー) | ブロック時に例外で許可する拡張機能ID |
IncognitoModeAvailability | DWORD | シークレットモード(1で禁止) |
DownloadDirectory | 文字列 | 既定のダウンロード先 |
利用できるポリシーの全量は各ベンダーのドキュメントで公開されています。バージョンによって追加・廃止があるため、適用前に自組織のブラウザバージョンで有効かを確認してください。
4. レジストリに書き込む
PowerShell から設定する例です。管理者権限が必要で、端末全体に影響します。
$chrome = 'HKLM:\SOFTWARE\Policies\Google\Chrome'
# キーが無ければ作る
if (-not (Test-Path $chrome)) { New-Item -Path $chrome -Force | Out-Null }
# パスワード保存を禁止する(強制)
New-ItemProperty -Path $chrome -Name 'PasswordManagerEnabled' `
-PropertyType DWord -Value 0 -Force | Out-Null
# シークレットモードを禁止する
New-ItemProperty -Path $chrome -Name 'IncognitoModeAvailability' `
-PropertyType DWord -Value 1 -Force | Out-Null
リストを渡すポリシーは、サブキーを作って 1 から連番の名前で値を並べます。ここが分かりにくいところです。
# 起動時に開くページ(RestoreOnStartup = 4 とセットで指定する)
New-ItemProperty -Path $chrome -Name 'RestoreOnStartup' `
-PropertyType DWord -Value 4 -Force | Out-Null
$urls = "$chrome\RestoreOnStartupURLs"
if (-not (Test-Path $urls)) { New-Item -Path $urls -Force | Out-Null }
# 値の名前は "1" "2" … という連番にする
New-ItemProperty -Path $urls -Name '1' -PropertyType String `
-Value 'https://portal.example.local/' -Force | Out-Null
初期値として配りたい場合は、Recommended サブキーの下に同じ名前で書きます。
# 初期値だけ配る(利用者はあとから変更できる)
$rec = "$chrome\Recommended"
if (-not (Test-Path $rec)) { New-Item -Path $rec -Force | Out-Null }
New-ItemProperty -Path $rec -Name 'DownloadDirectory' `
-PropertyType String -Value 'D:\Downloads' -Force | Out-Null
なお、本記事の確認は読み取りのみで行っており、上記の書き込みコマンドは実行していません。動作している端末のブラウザ設定を変更しないためです。
5. 適用できたかを必ず確認する
レジストリに書いただけでは確認になりません。ブラウザは起動時にポリシーを読むため、再起動が必要です。
適用状況はブラウザ側で確認します。
Chrome : chrome://policy
Edge : edge://policy
この画面には、読み込まれたポリシー名と値、そして適用元(コンピューター/ユーザー)が一覧で出ます。「ポリシーを再読み込み」ボタンを押せばブラウザを閉じずに反映できます。
ここに出てこない場合、よくある原因は次の3つです。
- ポリシー名のスペルミス。存在しない名前は無視されるだけでエラーが出ない
- 値の型が違う。DWORD で書くべきものを文字列で書いている
- 32bit / 64bit のレジストリビューの取り違え
「設定したのに効かない」の大半は1つ目です。chrome://policy に名前自体が出てこないなら、スペルを疑ってください。
6. GPOで配る場合
台数が多い場合はレジストリを直接書かず、グループポリシーで配ります。ADMX テンプレートを各ベンダーから入手し、ドメインのセントラルストアに配置すると、グループポリシー管理エディターに設定項目が出るようになります。
\\<ドメイン名>\SYSVOL\<ドメイン名>\Policies\PolicyDefinitions\
GPO で設定した内容も、最終的には端末側の同じレジストリキーに書き込まれます。つまり本記事のレジストリの考え方は、GPO を使う場合でもそのまま当てはまります。「管理されたポリシー」と「推奨されたポリシー」という2つのフォルダに分かれているのが、HKLM 直下と Recommended の違いにあたります。
少数の検証端末でレジストリを直接書いて挙動を確かめ、問題なければ GPO に落とす、という順番が安全です。
7. まとめ
Chrome と Edge のポリシーをレジストリで配る方法をまとめました。
- 書く場所で効き方が変わる。
HKLM直下は強制、Recommendedは初期値 - 配る前に既存のポリシーを読み取って確認する。キーが無ければ未設定
- リスト型のポリシーはサブキーを作り、
1からの連番で値を並べる chrome://policy/edge://policyで必ず確認する。出てこないならスペルミスを疑う
何でも HKLM 直下で強制すると、問い合わせが増えて運用が重くなります。譲れないものだけを強制し、残りは初期値として配ると落としどころが作りやすくなります。


コメント