今回はVBScrptからレジストリを編集し、IEの設定を自動化する方法を紹介します。
※レジストリをWindowsの各設定が登録されており、誤って編集するとWindowsが起動しなくなる可能性もあります。
十分注意しつつ試すようにしてください。
はじめに
企業で使用するパソコンでは、少なくても日本国内においては利用しているウェブシステムがIEじゃないと動かないといケースはまだまだ多いです。
ウェブシステムを使うために、例えばポップアップブロックを無効化したり、信頼済みサイトに登録したりと定番の設定変更が必要になったりします。
社内のパソコンをActiveDirectoryで管理している環境であれば、「グループポリシー」という機能でIEの設定を一元的に管理、コントロールもできますが、ネットワークの構成上ドメインコントローラーと直接通信できない環境で使用するパソコンの場合は、グループポリシーでの一元管理はできず、上記のIEの設定についても個別に実施せざるを得ません。
そこで、今回紹介するVBScriptを利用したバッチプログラムを活用することで、面倒なIE周りのセットアップ作業が一瞬で終わるようになります。
そもそも「レジストリ」って何?
上記の文面でも何度か出てきており、当記事のタイトルにもなっている「レジストリ」ですが、そもそも何のことかご存知でしょうか?
早速Wikipediaから引用してみましょう。
レジストリ (registry) は、Microsoft Windows オペレーティングシステム(OS)で用いられている設定情報のデータベースである。
OSに関する基本情報やアプリケーションの設定、拡張情報などのほか、拡張子の関連付け、ユーザパスワードなども保存されている。
とのことです。
簡単に言えば、Windowsの様々な設定を管理する仕組みです。
今回の記事の趣旨であるIEの各種設定は、通常は主に「インターネットオプション」という設定用の画面を介してユーザーが手動で実施するものですが、この「インターネットオプション」で登録した各種の設定は「レジストリ」に書き込まれます。
インターネットオプションだけではなく、Windowsのログインユーザーに関する情報や、IPアドレスなどのネットワーク関連の情報、スクリーンセーバーや電源オプションの設定などの様々なWindowsに関する設定は「レジストリ」に集約されています。
このレジストリを直接編集して書き換えることで、各設定画面を開かなくても設定を変えることができたり、本来設定画面では変えることができない特殊な設定に変更することができたりします。
ただ、この「レジストリ」はWindowsを起動させたり、様々なアプリケーションを起動させる際にも参照される重要な設定であり、誤った内容で編集してしまうと、Windowsが起動できなくなったり、Windowsにインストールされているアプリケーションが起動できなくなることもある為、編集する場合は注意が必要です。
尚、「レジストリ」を直接編集する為のWindows標準のツールとして「レジストリエディター」と呼ばれる機能が用意されており、その「レジストリエディター」の立ち上げ方についても後ほど説明します。
IEの設定を変更するサンプルプログラム
当項ではVBScriptでIEの設定を変更する場合のサンプルプログラムを紹介します。
当プログラムで自動設定する設定項目一覧
今回のサンプルプログラムで実施するIEの設定は以下の内容です。
企業で使用しているパソコンだと、IEを立ち上げた際に初期表示されるページ(ホームページ)は、企業内のポータルサイトだったり、グループウェアのログイン画面だったり、何らかの固有のページを設定することが大半です。
今回の記事ではこの設定はプログラムでレジストリを編集して自動で登録するようにしてあります。
IEでは「信頼済みサイト」という設定があり、アクセス先のWebサイトやWebアプリケーションに実装されている各スクリプトやActiveX コントロールと呼ばれるIE固有の機能が正常に動作しない場合があります。
これはIEのセキュリティを下げない為の重要な設定ですが、企業で使用しているWebサイトやWebアプリケーションのみを対象にして、セキュリティレベルを下げてスクリプトなどを動かせるようにすることは一般的です。
この登録作業も今回のプログラムでは自動登録します。
私の会社でもそうですが、クラシックASPベースでのWebシステムが動いている環境ですと、古いIEを対象にしたWebページの作りになっている場合が多く、「互換表示設定」を有効化しないと、ページのレイアウトが崩れたりスクリプトが動作しなくなったりします。
よって、この設定も今回のプログラムでは自動登録します。
尚、この設定については、設定すべき値を「レジストリエディター」を起動して、事前に調べておく必要がある為、そのやり方について後ほど説明します。
IEなどのブラウザ上で動くシステムでは「ポップアップ」と言われる仕組みを多用します。
ただ、この「ポップアップ」は悪意のあるウェブサイトなどが悪用することがあり、その対策としてIEの標準設定では「ポップアップ」は「ポップアップブロック」と呼ばれる機能で無効化されています。
無効化されていると、ブラウザ上でスクリプトが正常に動作できなくなる為、この設定を解除する必要があり、それも当プログラムで自動的に実施します。
インターネットオプション内の「詳細設定」にある設定項目です。
ローカルに保存されたウェブページでのスクリプトを制限したりする設定ですが、ウェブシステムで何らかのファイルをダウンロードさせて開こうとする場合など、微妙に影響を受けるので、必要によって許可をします。
この設定もプログラムで実施します。
インターネットオプション内の「詳細設定」にある設定項目です。
パソコンのCDドライブ内に置かれているウェブページを開いた際にスクリプトを制限します。
よくあるのは、プログラミング系の教本のおまけで付いてくるCDやDVD内のコンテンツがhtmiで作られている場合にこの制限が引っ掛かったりします。
CDドライブが付いていないパソコンならこの設定は不要です。
一応この設定もプログラムで変更します。
ブラウザでウェブページを参照した後のキャッシュをどのように扱うかの指定です。
当自動設定プログラムでは、「Webサイトを表示するたびに確認する」を指定します。
この設定の規定値は「自動的に確認する」ですが、その設定だとウェブシステムのプログラム変更があった場合に、古いキャッシュが有効なまま使われてしまい、プログラムの変更がブラウザ側に適用されず、システムが誤動作する場合があります。
よって企業でウェブシステムを使用する場合は変更しておいた方が良い項目です。
これはレジストリで管理する設定では無いのですが、企業のパソコンの初期セットアップで実施する作業では定番のなので、プログラムで自動作成されるようにします。
また、対象がウェブシステムの場合、32bit版のIEじゃないと正常に動かないケースもあるので、64bitのIEではなく、明示的に32bit版のIEのexeを使用するように指定します。
これもレジストリとは関係がない設定ですが、やはり定番の作業なのでプログラムで自動登録します。
なお、上記のショートカットと同じように、32bit版のIEを指定したい場合は、上記で作成したショートカットを「お気に入り」用の所定のフォルダにコピーしてください。
サンプルプログラム
当プログラムはVBScriptで作成します。
空の.vbsファイルを作製し、以下のプログラムを貼り付けたあと、必要な箇所を編集してください。
Option Explicit Dim objShell Dim objShortCut Dim Desktop_Path Dim ShortCutName Dim OS_ArchType Dim Favorites_Path Dim ShortCutName_Fav Dim objShortCut_Fav Set objShell = WScript.CreateObject("WScript.Shell") Desktop_Path = objShell.SpecialFolders("Desktop") Favorites_Path = objShell.SpecialFolders("Favorites") '■IEのインターネットオプション関連の設定****************************************************** 'IEのホームページをYahoo Japanに設定します。※レジストリ編集 objShell.Run "reg add ""HKCU\Software\Microsoft\Internet Explorer\Main"" /v ""Start Page"" /t REG_SZ /d ""https://www.yahoo.co.jp/"" /f" 'IEの信頼済みサイトへ登録します。※レジストリ編集 'objShell.Run "reg add ""HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\対象のホスト名"" /v ""*"" /t REG_DWORD /d ""00000002""" '以下登録例 objShell.Run "reg add ""HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\yahoo.co.jp"" /v ""*"" /t REG_DWORD /d ""00000002""" 'IEの互換表示設定を登録します。※レジストリ編集 'バイナリの値の確認方法は別途解説します。 objShell.Run "reg add ""HKCU\Software\Microsoft\Internet Explorer\BrowserEmulation\ClearableListData"" /t REG_BINARY /v ""UserFilter"" /d ""バイナリの長い文字列値"" /f" 'IE11のポップアップブロックを無効化します。※レジストリ編集 objShell.Run "reg add ""HKCU\Software\Microsoft\Internet Explorer\New Windows"" /v ""PopupMgr"" /t REG_DWORD /d ""0"" /f" 'IE11の詳細設定「マイ コンピューターのファイルでのアクティブ コンテンツの実行を許可する」を有効化します。※レジストリ編集 ※値は0が有効 objShell.Run "reg add ""HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_LOCALMACHINE_LOCKDOWN"" /v ""iexplore.exe"" /t REG_DWORD /d ""0"" /f" 'IE11の詳細設定「マイ コンピューターでの、CD のアクティブ コンテンツの実行を許可する」を有効化します。※レジストリ編集 ※値は1が有効 objShell.Run "reg add ""HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_LOCALMACHINE_LOCKDOWN\Settings"" /v ""LOCALMACHINE_CD_UNLOCK"" /t REG_DWORD /d ""1"" /f" 'IE11の「保存しているページの新しいバージョンがあるかどうかの確認」を設定します。※レジストリ編集 objShell.Run "reg add ""HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"" /v ""SyncMode5"" /t REG_DWORD /d ""3"" /f" '******************************************************************************************* '実行環境のアーキテクチャを取得します。 OS_ArchType = objShell.Environment("Process").Item("PROCESSOR_ARCHITECTURE") '■32bit用のIE.exeを指定した特定URLのショートカットをデスクトップに作成します。 '作成するショートカットの名前を指定します。 ShortCutName = Desktop_Path & "\テストショートカット.lnk" Set objShortCut = objShell.CreateShortcut(ShortCutName) 'OSが32bit環境か64bit環境かで処理を分岐します。 If OS_ArchType = "x86" Then '32bit objShortCut.TargetPath = "C:\Program Files\Internet Explorer\iexplore.exe" Else '64bit objShortCut.TargetPath = "C:\Program Files (x86)\Internet Explorer\iexplore.exe" End If '作業フォルダを指定します。 objShortCut.WorkingDirectory = "%USERPROFILE%\Desktop" '対象のEXEに渡す引数を指定します。 objShortCut.Arguments = "https://www.yahoo.co.jp" objShortCut.Save '■IEのお気に入りにURLのショートカットを登録します。 ShortCutName_Fav = Favorites_Path & "\テストショートカット.url" Set objShortCut_Fav = objShell.CreateShortcut(ShortCutName_Fav) objShortCut_Fav.TargetPath = "https://www.yahoo.co.jp" objShortCut_Fav.Save Set objShortCut_Fav = Nothing Set objShortCut = Nothing Set objShell = Nothing msgbox "IEの各設定処理及び社内システムのショートカットの作成処理が完了しました。"
IEの互換表示設定を登録する際のバイナリ値確認方法
上記プログラムで27行目で、レジストリに登録するバイナリ値を指定する処理がありますが、このバイナリ値は既に”互換表示設定がされている端末“で対象のレジストリの登録された値を確認して、それと同じ値を書き込む必要があります。
よって、そのバイナリ値の値の確認方法も紹介しておきます。
「レジストリエディター」を起動
スタートメニューを開き、「ファイル名を指定して実行」を起動します。
表示された以下の画面で regedit と入力してOKボタンを押下します。
「レジストリエディター」で対象のレジストリキーを開く
以下の画面が表示されます。
これが「レジストリエディター」と呼ばれるレジストリ編集機能です。
画面の左側にフォルダがいくつか並んでいますが、以下のフォルダを順に開いていきます。
[HKEY_CURRENT_USER]→[Software]→[Microsoft]→[Internet Explorer]→[BrowserEmulation]→[ClearableListData]
レジストリキー「ClearableListData」をエクスポート
レジストリキー「ClearableListData」を右クリックし、「エクスポート」を選択します。
エクスポートしたファイルの保存先を指定するダイアログが表示される為、デスクトップなど適当な場所に保存します。
保存されたファイルをテキストエディタで開く
保存されたファイルをテキストエディタで開くと、以下の様な内容が書き出されていると思います。
この出力された内容の「”UserFilter”=hex:」という文字列より後ろの文字列が確認対象のバイナリ値です。
レジストリに登録する際には、カンマ、バックスラッシュ(円マーク),改行は不要なので、それらの文字は除去した「”UserFilter”=hex:」以降の文字列を上記サンプルプログラムの27行目、「バイナリの長い文字列値」と記載した箇所に貼り付けてください。
最後に
今回はVBScriptを使用したIE関連の設定変更作業を自動化するサンプルプログラムも紹介させていただきました。
IEの設定は各社が独自にルールを設けて設定しており、設定できる項目も非常に多い為、今回紹介した設定項目だけでは足りない場合もあるかと思います。
その場合は、対象の設定項目がレジストリのどのキーが関連しているのかをインターネットで調べたうえで、今回掲載したサンプルプログラムを参考に、色々処理を追加してもらうと良いかと思います。
また、今回はIE周りの設定をする趣旨でプログラムを紹介しましたが、レジストリはIEだけではなく、Windowsの多くの設定を管理しています。
よって、IE以外のWindowsの各種設定作業についても、対象となるレジストリのキーを調べたうえで、上記のサンプルプログラムを参考に処理を追加してみてください。
今回も読んでいただきましてありがとうございました。
それでは皆さまごきげんよう。
↓今回の記事と同様に、レジストリを活用してDSNの設定作業を自動化する方法を紹介していきます。
良かったら読んでください。