レジストリを書いたバッチファイルが現実的だと思いますが、現在勉強中のPowerShellからIEのポップアップ ブロック 許可サイトを制御してみたい欲求にかられ、実際に試してみた内容をメモ。
スマートな内容かはさておき、サンプルコードをのせておきます。
ん~いい勉強になりました!
許可サイトはレジストリを操作するんですね
先人の方々のお知恵をお借りしながら、自分なりに調べてみました。IEのポップアップ ブロックの有効/無効、および、許可サイトの管理はレジストリを使っています。
- ポップアップブロックの有効/無効
パス:HKCU\Software\Microsoft\Internet Explorer\New Windows
値:PopupMgr
データ:有効の場合はyes、0x00000001。無効は0x00000000
※yesの状態から無効→有効にしたところ、16進数になりました。
Technetの記事「イベント 1027 - ポップアップ ブロック」にはyesになってますね。 - 許可サイトの追加・変更・削除
パス:HKCU\Software\Microsoft\Internet Explorer\New Windows\Allow
値:サイトURL
種類:バイナリ
データ:0x00000000, 0x00000000
PowerShellからIEの「許可されたサイト」を追加してみた
PowerShellからIEの「許可されたサイト」を追加するためには、前述のとおりレジストリを操作します。下記は(内容がいい・悪いは別とし、)私が書いたサンプルコードです。
※動作環境は、Windows 7 Professional 64bit、IE10です。
キモは、New-ItemPropertyのValue[0x00000000, 0x00000000]です。
最初、記述方法が全く分からなかったので試行錯誤しました。
もし、複数の許可サイトを追加したいのであればNew-ItemPropertyを複数回実行すればいいと思います。XMLファイルやCSVファイル等を読み込んで処理すれば簡単でしょう。
#OSチェック ~Windows 7より前は処理を停止
$os = [environment]::OSVersion.Version
if($os.Major -lt 6){
Write-Output 'Windows 7以上でお使いください。'
exit
}
#変数
$path = "HKCU:\Software\Microsoft\Internet Explorer\New Windows"
$path2 = "${path}\Allow"
$addUrl = "許可したいサイト"
#ポップアップ・ブロックをチェック、有効の場合はURLを追加
$PopupMgr = $(Get-ItemProperty -Path $Path -Name 'PopupMgr').PopupMgr
if($PopupMgr -eq 'yes' -or $PopupMgr -eq 0x00000001){
#レジストリの修正
#Set-ItemProperty -Path $path -Name 'PopupMgr' -Value 0x00000001
#許可サイトがなければ、サイトを追加
if($(Get-ItemProperty -Path $path2 -Name $addUrl).$addUrl -ne 0){
New-ItemProperty -Path $path2 -Name $addUrl -Value 0x00000000, 0x00000000 -PropertyType binary
}
else{
Write-Output "${addUrl}はすでに存在しています。"
}
}
余談:Windows XPの場合、レジストリのデータは若干異なるのか~
今回はWindows 7以上に絞ってみましたが、来年サポートが切れるWindows XPの場合はどうなのか調べてみました。レジストリを確認してみたところ、許可サイトのデータはWindows 7と異なっています。
長さ0のバイナリ値になっていますね。