【DosもしくはVBS】IE→ツール→インターネットオプションのセキュリティタブに存在するレベルのカスタマイズを押下すると詳細なセキュリティ設定が表示されます。この中に表示されている以下の設定内容をDosやVBSなどで設定することはできますか?


・「ActiveXコントロール」とプラグインの実行」を有効にする
・「スクリプトを実行しても安全だとマークされていないActiveXコントロールのスクリプトの実行」を有効にする
・「スクリプトを実行しても安全だとマークされているActiveXコントロールのスクリプトの実行」を有効にする

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/07/05 10:44:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ardarim No.2

回答回数897ベストアンサー獲得回数145

ポイント800pt

VBSでの例を示します。

実際の設定は、各ゾーンごとに定義されていますので、各ゾーンごとに設定する必要があります。すべての設定を同じにする場合はすべてのゾーンに書き込む必要があります。(セキュリティ的にはお勧めしません)


IEZONE_ROOT = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\"

' [ActiveX コントロールとプラグインの実行] 
URLACTION_ACTIVEX_RUN = "1200"

' [スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプトの実行]
URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY = "1201"

' [スクリプトを実行しても安全だとマークされている ActiveX コントロールのスクリプトの実行]
URLACTION_SCRIPT_SAFE_ACTIVEX = "1405"

ZONE_INTRANET   = "1"  ' イントラネットサイト	
ZONE_TRUSTED    = "2"  ' 信頼済みサイト
ZONE_INTERNET   = "3"  ' インターネットサイト
ZONE_RESTRICTED = "4"  ' 制限つきサイト

URLPOLICY_ALLOW    = 0 ' 有効にする
URLPOLICY_QUERY    = 1 ' ダイアログを表示する
URLPOLICY_DISALLOW = 3 ' 無効にする

' 設定したいゾーンを指定する(以下の例はインターネット)
TargetZone = ZONE_INTERNET

Call SetUrlAction(TargetZone, URLACTION_ACTIVEX_RUN, URLPOLICY_ALLOW)
Call SetUrlAction(TargetZone, URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY, URLPOLICY_ALLOW)
Call SetUrlAction(TargetZone, URLACTION_SCRIPT_SAFE_ACTIVEX, URLPOLICY_ALLOW)

Sub SetUrlAction(Zone, Action, Policy)
    Set WshShell=WScript.CreateObject("WScript.Shell")
    WshShell.RegWrite IEZONE_ROOT & Zone & "\" & Action, Policy, "REG_DWORD"
End Sub

参考になるページです。

上級ユーザー向けの Internet Explorer セキュリティ ゾーン関連のレジストリ エントリ(ゾーン設定レジストリの概要)

Internet Explorer URL Action and Advanced Security Settings in Group Policy(ゾーン設定の詳細URLアクションの一覧)

URL Action Flags(URLアクション一覧の英語版。上記と基本的に同じ)

id:harunoharuno

大変参考になりました。どうもありがとうございます。

2010/07/05 10:43:41

その他の回答1件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント200pt

基本的にはこのあたりはレジストリに設定されるので、レジストリを変更すればよいのですが、

単純にあるキーを変えれば良いというのではなく、ローカルやグループのセキュリティポリシーなど

影響がある部分です。


DOMAIN 内で同等の環境下であるならば、1台のPCで環境を構築した後、それを他の PC へ展開

するのが手っ取り早いと思います。

(これからPCを導入するのであれば、あらかじめ Default User に設定してしまえば、初回ログオン時に

それが適用されます。)


環境を設定後、下記を参考に対象部分のレジストリを保存し、

http://www.atmarkit.co.jp/fwin2k/win2ktips/278iezonebu/iezonebu....


それを利用したいPCで保存したファイルをダブルクリックすれば、実行されますし、

コマンドで実行したければREG コマンドでファイル指定することもできます。

http://pasofaq.jp/windows/command/reg.htm


御参考までに、情報としては下記があります。

http://support.microsoft.com/kb/182569/ja

{AEBA21FA-782A-4A90-978D-B72164C80120} の1200、2000 あたりですね。


お約束ですが、

警告: レジストリ エディターまたは別の方法を使用してレジストリを誤って変更すると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。レジストリの変更は、自己の責任において行ってください。
id:harunoharuno

レジストリの退避機能を使って作ったものを

配布用に用いる考えはありませんでした。同じOSバージョンで

あれば使えそうな気がします。

2010/07/05 10:37:26
id:ardarim No.2

回答回数897ベストアンサー獲得回数145ここでベストアンサー

ポイント800pt

VBSでの例を示します。

実際の設定は、各ゾーンごとに定義されていますので、各ゾーンごとに設定する必要があります。すべての設定を同じにする場合はすべてのゾーンに書き込む必要があります。(セキュリティ的にはお勧めしません)


IEZONE_ROOT = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\"

' [ActiveX コントロールとプラグインの実行] 
URLACTION_ACTIVEX_RUN = "1200"

' [スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプトの実行]
URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY = "1201"

' [スクリプトを実行しても安全だとマークされている ActiveX コントロールのスクリプトの実行]
URLACTION_SCRIPT_SAFE_ACTIVEX = "1405"

ZONE_INTRANET   = "1"  ' イントラネットサイト	
ZONE_TRUSTED    = "2"  ' 信頼済みサイト
ZONE_INTERNET   = "3"  ' インターネットサイト
ZONE_RESTRICTED = "4"  ' 制限つきサイト

URLPOLICY_ALLOW    = 0 ' 有効にする
URLPOLICY_QUERY    = 1 ' ダイアログを表示する
URLPOLICY_DISALLOW = 3 ' 無効にする

' 設定したいゾーンを指定する(以下の例はインターネット)
TargetZone = ZONE_INTERNET

Call SetUrlAction(TargetZone, URLACTION_ACTIVEX_RUN, URLPOLICY_ALLOW)
Call SetUrlAction(TargetZone, URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY, URLPOLICY_ALLOW)
Call SetUrlAction(TargetZone, URLACTION_SCRIPT_SAFE_ACTIVEX, URLPOLICY_ALLOW)

Sub SetUrlAction(Zone, Action, Policy)
    Set WshShell=WScript.CreateObject("WScript.Shell")
    WshShell.RegWrite IEZONE_ROOT & Zone & "\" & Action, Policy, "REG_DWORD"
End Sub

参考になるページです。

上級ユーザー向けの Internet Explorer セキュリティ ゾーン関連のレジストリ エントリ(ゾーン設定レジストリの概要)

Internet Explorer URL Action and Advanced Security Settings in Group Policy(ゾーン設定の詳細URLアクションの一覧)

URL Action Flags(URLアクション一覧の英語版。上記と基本的に同じ)

id:harunoharuno

大変参考になりました。どうもありがとうございます。

2010/07/05 10:43:41
  • id:harunoharuno

    >>ardarim様

    VBSで設定する

     ・「スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプトの実行」の有効

    についてですが、
    IE上のGUIでは有効になるものの、設定そのものは十分に変更されていないように思われました。

    というのはVBSを実行後に
    Webアプリを起動したところ、処理が途中で終了してしまう現象が発生しているからです。
    不思議に思い設定項目を調べていたところ

    「スクリプトを実行しても安全だとマークされていない ActiveX コントロールの初期化とスクリプトの実行」

    を手動で無効にして、その後有効にしたらWebアプリが動作することを確認しました。

    手動と、VBSでは若干結果が異なっているのですが、この状況についてコメントや
    アドバイスなどいただけると非常に助かります。
  • id:Mook
    レジストリの値を直接変更するのは、関連項目が矛盾ないようにする必要がある
    ことと、レジストリを変更して直後に有効になるとは限らず、再起動や再ログインが
    必要になるケースがあります。

    IE のセキュリティ設定は特に複雑で、単純に一か所の値を変えれば済むといったも
    のではないため、上記のように回答いたしました。

    実際の影響範囲を調べるには下記のようなツールを使うと、便利だと思います。
    http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx


    私も仕事で、PC の設定をバッチやスクリプトで検討する機会が多いのですが、
    IE は厄介な相手です。
  • id:ardarim
    レジストリは、OS再起動後に有効になるもの、プロセスの再起動後に有効になるものなど種類によって変更が有効になるタイミングが異なります。
    IE関連のレジストリは、基本的にプロセスの再起動後にレジストリ変更が有効になります。Webアプリの場合は、レジストリ変更後にブラウザを一旦終了し、再起動した後に有効になるはずです。

    IE設定画面で手動で変更した時のように、プロセスを終了せずにレジストリ変更を有効にする場合は、WinInetモジュールにレジストリ変更を明示的に通知してやる必要があります。これにはInternetSetOption APIを使います。(IE設定画面でも内部で呼び出されます)
    InternetSetOption(NULL,INTERNET_OPTION_SETTINGS_CHANGED,NULL,0);

    http://support.microsoft.com/kb/294989/en-us

    残念ながら、VBSから直接Win32 APIを呼ぶことは出来ませんので、もしスクリプトで完結させるのであれば、InternetSetOptionを呼ぶだけのIE設定リフレッシュEXEを作って、スクリプトから呼び出すなどする必要があるでしょう。
  • id:ardarim
    ごめんなさい…。↑嘘でした。
    ゾーン設定については、InternetSetOptionでは更新されないようです。
    インターネット設定画面では、IInternetZoneManagerインターフェースを使って設定を更新しています。(IInternetZoneManager::GetZoneAttributes()してそのままIInternetZoneManager::SetZoneAttributes()すると更新されます)

    http://msdn.microsoft.com/en-us/library/ms537079(VS.85).aspx

    いずれにしても、スクリプトだけでは即時に設定更新することはできません。
  • id:harunoharuno
    >>Mook様

    Process Monitorを教えていただきありがとうございます。
    時間順にターゲット指定したツール(IE,Word)が行った
    レジストリに対する操作などが確認できました。

    お蔭様で原因を調べることが出来ます。
  • id:harunoharuno
    >>ardarim様

    インターネット設定画面で
    IInternetZoneManagerを呼び出しているんですね。

    情報ありがとうございます。

    ですが、、、今回はVBSはあきらめます。
    次があるようでしたら、
    IInternetZoneManagerを呼び出すツールを作成し
    VBSで設定できるようにします。
    重ねてアドバイスいただきありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません