国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

用vbs檢測Internet Explorer 中是否啟用了 ActiveX

2020-07-26 12:01:59
字體:
來源:轉載
供稿:網友
問:

您好,腳本專家!如何知道 Internet Explorer 中是否啟用了 ActiveX?

-- JV

答:

您好,JV。您一定要問這個問題,是嗎?實際上,這并不是一個特別難回答的問題,只是有點復雜。不過,那與配置 Internet Explorer 的方式緊密相關,而與通過編寫一個腳本來檢索此信息關系不大。

首先,Internet Explorer 沒有管理對象模型;相反,我們能夠通過編程的方式檢索 Internet Explorer 設置和屬性值的唯一方法就是通過編寫一個腳本來從注冊表中獲取此信息。這相當容易;我們經常在本專欄中使用注冊表讀取的腳本。最為棘手的部分就是搞清楚需要讀取哪個注冊表值,并知道如何解釋返回的數據。

注意:另一個棘手的部分在于知道您對哪個 ActiveX 設置感興趣;不論好壞,Internet Explorer 有與 ActiveX 控件相關的多個設置。在今天的專欄中,我們假定您要讀取此設置的值:運行 ActiveX 控件和插件

讓我們先從搞清楚需要修改哪些注冊表值開始。實際上,Internet Explorer 安全設置沒有全局設置;相反,這些設置由 Internet Explorer 區域進行管理。有四個這樣的安全區域;區域名及其值如下表所示:

區域名

區域值

Intranet 站點

1

受信任的站點

2

Internet 站點

3

受限制的站點

4

可在注冊表的 HKEY_CURRENT_USER/ Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/ 部分中找到 Internet Explorer 安全區域的設置;要訪問某個特定區域,您需要訪問與該區域對應的子項。要確定相應的子項,只需將區域值追加到前面的注冊表路徑即可。例如,要獲取 Internet 站點區域(值 3)的設置,您需要訪問以下注冊表子項:

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/3

您能看到 3 被追加到了末尾處。要訪問 Intranet 站點區域(值 1)的設置?沒問題:

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/1

找到正確的注冊表子項后,您需要知道要讀取哪個注冊表值。遺憾的是(至少對于腳本編寫者來說),這些注冊表值的名稱有點含糊;例如,我們感興趣的名稱為 1200。(為什么是這樣呢?我們不知道。)如果您對使用腳本來讀取/管理 Internet Explorer 設置感興趣,那么,您可能希望閱讀一下 Managing Internet Explorer Enhanced Security Configuration whitepaper(英文)。僅一部分文檔會涉及腳本編寫,但是,該部分的確將這些含糊的注冊表值映射到了用戶界面中的相應屬性。當然,許多這樣的設置都可在 Tweakomatic 中找到。(Tweakomatic 與白皮書不同,它會真正地為您編寫腳本。)

那么,我們已準備最終編寫一個腳本并真的在此執行一些操作嗎?幾乎是這樣。您需要知道的另一件事就是配置信息作為雙字節(數字)值被存儲在注冊表中。如果您知道 ActiveX 控件被配置為 3 而不是 65536,這會有所幫助嗎?可能沒有。不過,下表可能有所幫助:

注冊表值

用戶界面值

0

Enabled

1

Prompt

3

Disabled

65536

Administrator Approved

不,最后一個值并非印刷錯誤,它的確 65536。自己去想吧。

那好,現在我們就準備編寫一個腳本。下面的這個示例腳本可檢索 Intranet 站點區域(區域值 1)的設置信息:

HKEY_CURRENT_USER = &H80000001strComputer = "."Set objReg = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")strKeyPath = "Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/1"ValueName = "1200"objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValueWscript.Echo "Run ActiveX Controls and Plug-ins"If IsNull(dwValue) Then  Wscript.Echo "Intranet sites: The value is either Null or could not be found in the registry."ElseIf dwValue = 0 Then  Wscript.Echo "Intranet sites: Enabled"ElseIf dwValue = 1 Then  Wscript.Echo "Intranet sites: Prompt"ElseIf dwValue = 3 Then  Wscript.Echo "Intranet sites: Disabled"ElseIf dwValue = 65536 Then  Wscript.Echo "Intranet sites: Administrator Approved"End If

我們首先定義一個名為 HKEY_CURRENT_USER 的常量并將其值設置為 &H80000001;這將告訴腳本我們要使用哪個注冊表配置單元。然后我們連接到 WMI 服務;請注意,StdRegProv(標準注冊表提供程序)類位于 root/default 命名空間中。(許多腳本編寫者都認為該類與大多數 WMI 類一樣,都位于 root/cimv2 中。事實并非如此。)

接下來我們將為一對變量賦值:

strKeyPath = "Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/1"ValueName = "1200"

正如您所看到的,變量 strKeyPath 包含 HKEY_CURRENT_USER 中的注冊表路徑(請勿在該路徑中包含 HKEY_CURRENT_USER,否則,腳本將失敗)。同時,將變量 ValueName 設置為 1200,該值恰好為我們要讀取的注冊表值。

然后我們調用 GetDWORDValue 方法,這樣我們可讀取注冊表中的雙字節值:

objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue

請注意,我們需要向 GetDWORDValue 傳遞幾個參數:

HKEY_CURRENT_USER,告訴腳本要使用哪個注冊表配置單元的常量。

strKeyPath,包含注冊表路徑的變量。

ValueName,表示我們要讀取的注冊表值的變量。

dwValue,將結束存儲從注冊表中讀取的值的“輸出參數”。如果您正在想,“請稍等,我們沒有為 dwValue 賦值,”您說對了。我們就是這樣設計的:我們為輸出參數賦值。相反,GetDWORDValue 將讀取恰好存儲在所討論的注冊表值 (1200) 中的任何值,然后該方法會將該值賦給 dwValue。

確實很不錯,不是嗎?

此時,我們可只回顯從注冊表中檢索的值。不過,正如我們所指出的那樣,該檢索值將為諸如 1、3 或 65536 這樣的值。因此,我們建立一個簡單小巧的 If Then ElseIf 塊以檢查返回值,并回顯一個更有意義的消息:

If IsNull(dwValue) Then  Wscript.Echo "Intranet sites: The value is either Null or could not be found in the registry."ElseIf dwValue = 0 Then  Wscript.Echo "Intranet sites: Enabled"ElseIf dwValue = 1 Then  Wscript.Echo "Intranet sites: Prompt"ElseIf dwValue = 3 Then  Wscript.Echo "Intranet sites: Disabled"ElseIf dwValue = 65536 Then  Wscript.Echo "Intranet sites: Administrator Approved"End If

您說對了:一旦您知道值存儲在注冊表中的什么位置以及如何將值存儲在注冊表中,這就相當容易了。

僅僅為了省去鍵入(和/或復制與粘貼)之苦,下面的腳本可返回所有四個安全區域的信息:

HKEY_CURRENT_USER = &H80000001strComputer = "."Set objReg = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")strKeyPath = "Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/1"ValueName = "1200"objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValueWscript.Echo "Run ActiveX Controls and Plugins"If IsNull(dwValue) Then  Wscript.Echo "Intranet sites: The value is either Null or could not be found in the registry."ElseIf dwValue = 0 Then  Wscript.Echo "Intranet sites: Enabled"ElseIf dwValue = 1 Then  Wscript.Echo "Intranet sites: Prompt"ElseIf dwValue = 3 Then  Wscript.Echo "Intranet sites: Disabled"ElseIf dwValue = 65536 Then  Wscript.Echo "Intranet sites: Administrator Approved"End IfstrKeyPath = "Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/2"ValueName = "1200"objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValueIf IsNull(dwValue) Then  Wscript.Echo "Trusted sites: The value is either Null or could not be found in the registry."ElseIf dwValue = 0 Then  Wscript.Echo "Trusted sites: Enabled"ElseIf dwValue = 1 Then  Wscript.Echo "Trusted sites: Prompt"ElseIf dwValue = 3 Then  Wscript.Echo "Trusted sites: Disabled"ElseIf dwValue = 65536 Then  Wscript.Echo "Trusted sites: Administrator Approved"End IfstrKeyPath = "Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/3"ValueName = "1200"objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValueIf IsNull(dwValue) Then  Wscript.Echo "Internet sites: The value is either Null or could not be found in the registry."ElseIf dwValue = 0 Then  Wscript.Echo "Internet sites: Enabled"ElseIf dwValue = 1 Then  Wscript.Echo "Internet sites: Prompt"ElseIf dwValue = 3 Then  Wscript.Echo "Internet sites: Disabled"ElseIf dwValue = 65536 Then  Wscript.Echo "Internet sites: Administrator Approved"End IfstrKeyPath = "Software/Microsoft/Windows/CurrentVersion/Internet Settings/Zones/4"ValueName = "1200"objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValueIf IsNull(dwValue) Then  Wscript.Echo "Restricted sites: The value is either Null or could not be found in the registry."ElseIf dwValue = 0 Then  Wscript.Echo "Restricted sites: Enabled"ElseIf dwValue = 1 Then  Wscript.Echo "Restricted sites: Prompt"ElseIf dwValue = 3 Then  Wscript.Echo "Restricted sites: Disabled"ElseIf dwValue = 65536 Then  Wscript.Echo "Restricted sites: Administrator Approved"End If

運行腳本,將返回類似下面內容的輸出:

Run ActiveX Controls and PluginsIntranet sites: EnabledTrusted sites: EnabledInternet sites: EnabledRestricted sites: Disabled

在此我們還能再做些什么嗎?或許可以;畢竟我們還可配置此注冊表值。但那是改天要討論的內容了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正镶白旗| 成都市| 北辰区| 石屏县| 陆良县| 津南区| 华亭县| 曲靖市| 西乌| 临洮县| 昌都县| 大兴区| 榕江县| 杭锦旗| 佛山市| 稻城县| 故城县| 张家界市| 鲁山县| 武城县| 宁强县| 吉木萨尔县| 广元市| 即墨市| 盐山县| 鹤峰县| 卢氏县| 和田县| 巩留县| 民权县| 襄汾县| 三台县| 广平县| 开封市| 惠东县| 仁化县| 寿宁县| 天镇县| 伊金霍洛旗| 花垣县| 旬邑县|