佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 用vbs檢測(cè)Internet Explorer 中是否啟用了 ActiveX

用vbs檢測(cè)Internet Explorer 中是否啟用了 ActiveX

熱門(mén)標(biāo)簽:網(wǎng)站文章發(fā)布 鐵路電話(huà)系統(tǒng) 美圖手機(jī) 智能手機(jī) 檢查注冊(cè)表項(xiàng) 服務(wù)器配置 銀行業(yè)務(wù) 呼叫中心市場(chǎng)需求
問(wèn):

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

-- JV

答:

您好,JV。您一定要問(wèn)這個(gè)問(wèn)題,是嗎?實(shí)際上,這并不是一個(gè)特別難回答的問(wèn)題,只是有點(diǎn)復(fù)雜。不過(guò),那與配置 Internet Explorer 的方式緊密相關(guān),而與通過(guò)編寫(xiě)一個(gè)腳本來(lái)檢索此信息關(guān)系不大。

首先,Internet Explorer 沒(méi)有管理對(duì)象模型;相反,我們能夠通過(guò)編程的方式檢索 Internet Explorer 設(shè)置和屬性值的唯一方法就是通過(guò)編寫(xiě)一個(gè)腳本來(lái)從注冊(cè)表中獲取此信息。這相當(dāng)容易;我們經(jīng)常在本專(zhuān)欄中使用注冊(cè)表讀取的腳本。最為棘手的部分就是搞清楚需要讀取哪個(gè)注冊(cè)表值,并知道如何解釋返回的數(shù)據(jù)。

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

讓我們先從搞清楚需要修改哪些注冊(cè)表值開(kāi)始。實(shí)際上,Internet Explorer 安全設(shè)置沒(méi)有全局設(shè)置;相反,這些設(shè)置由 Internet Explorer 區(qū)域進(jìn)行管理。有四個(gè)這樣的安全區(qū)域;區(qū)域名及其值如下表所示:

區(qū)域名

區(qū)域值

Intranet 站點(diǎn)

1

受信任的站點(diǎn)

2

Internet 站點(diǎn)

3

受限制的站點(diǎn)

4

可在注冊(cè)表的 HKEY_CURRENT_USER\ Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\ 部分中找到 Internet Explorer 安全區(qū)域的設(shè)置;要訪(fǎng)問(wèn)某個(gè)特定區(qū)域,您需要訪(fǎng)問(wèn)與該區(qū)域?qū)?yīng)的子項(xiàng)。要確定相應(yīng)的子項(xiàng),只需將區(qū)域值追加到前面的注冊(cè)表路徑即可。例如,要獲取 Internet 站點(diǎn)區(qū)域(值 3)的設(shè)置,您需要訪(fǎng)問(wèn)以下注冊(cè)表子項(xiàng):

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

您能看到 3 被追加到了末尾處。要訪(fǎng)問(wèn) Intranet 站點(diǎn)區(qū)域(值 1)的設(shè)置?沒(méi)問(wèn)題:

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

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

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

注冊(cè)表值

用戶(hù)界面值

0

Enabled

1

Prompt

3

Disabled

65536

Administrator Approved

不,最后一個(gè)值并非印刷錯(cuò)誤,它的確 65536。自己去想吧。

那好,現(xiàn)在我們就準(zhǔn)備編寫(xiě)一個(gè)腳本。下面的這個(gè)示例腳本可檢索 Intranet 站點(diǎn)區(qū)域(區(qū)域值 1)的設(shè)置信息:

HKEY_CURRENT_USER = H80000001

strComputer = "."
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, dwValue

Wscript.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

我們首先定義一個(gè)名為 HKEY_CURRENT_USER 的常量并將其值設(shè)置為 H80000001;這將告訴腳本我們要使用哪個(gè)注冊(cè)表配置單元。然后我們連接到 WMI 服務(wù);請(qǐng)注意,StdRegProv(標(biāo)準(zhǔn)注冊(cè)表提供程序)類(lèi)位于 root\default 命名空間中。(許多腳本編寫(xiě)者都認(rèn)為該類(lèi)與大多數(shù) WMI 類(lèi)一樣,都位于 root\cimv2 中。事實(shí)并非如此。)

接下來(lái)我們將為一對(duì)變量賦值:

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

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

然后我們調(diào)用 GetDWORDValue 方法,這樣我們可讀取注冊(cè)表中的雙字節(jié)值:

objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue

請(qǐng)注意,我們需要向 GetDWORDValue 傳遞幾個(gè)參數(shù):

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

strKeyPath,包含注冊(cè)表路徑的變量。

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

dwValue,將結(jié)束存儲(chǔ)從注冊(cè)表中讀取的值的“輸出參數(shù)”。如果您正在想,“請(qǐng)稍等,我們沒(méi)有為 dwValue 賦值,”您說(shuō)對(duì)了。我們就是這樣設(shè)計(jì)的:我們為輸出參數(shù)賦值。相反,GetDWORDValue 將讀取恰好存儲(chǔ)在所討論的注冊(cè)表值 (1200) 中的任何值,然后該方法會(huì)將該值賦給 dwValue。

確實(shí)很不錯(cuò),不是嗎?

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

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

您說(shuō)對(duì)了:一旦您知道值存儲(chǔ)在注冊(cè)表中的什么位置以及如何將值存儲(chǔ)在注冊(cè)表中,這就相當(dāng)容易了。

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

HKEY_CURRENT_USER = H80000001

strComputer = "."
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, dwValue

Wscript.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 If

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2"
ValueName = "1200"

objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue

If 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 If

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3"
ValueName = "1200"

objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue

If 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 If

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4"
ValueName = "1200"

objReg.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, ValueName, dwValue

If 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

運(yùn)行腳本,將返回類(lèi)似下面內(nèi)容的輸出:

Run ActiveX Controls and Plugins
Intranet sites: Enabled
Trusted sites: Enabled
Internet sites: Enabled
Restricted sites: Disabled

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

標(biāo)簽:河南 沈陽(yáng) 紅河 長(zhǎng)治 滄州 樂(lè)山 新疆 上海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用vbs檢測(cè)Internet Explorer 中是否啟用了 ActiveX》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 上一篇:vbs中使用 ADO 讀取所有數(shù)據(jù)均在一行上的文本文件的代碼

    下一篇:在vbs運(yùn)行命令行工具后讓命令窗口保持打開(kāi)狀態(tài)的腳本

    收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266
    黑龙江省| 沐川县| 临夏市| 杭锦后旗| 邵武市| 平乐县| 北碚区| 双江| 正阳县| 聊城市| 滦南县| 个旧市| 洞口县| 武邑县| 双峰县| 运城市| 揭东县| 天镇县| 盈江县| 新乐市| 十堰市| 长垣县| 甘肃省| 朝阳县| 平山县| 临泉县| 上犹县| 崇左市| 马山县| 东海县| 海兴县| 抚宁县| 朝阳区| 潼关县| 新津县| 咸丰县| 静乐县| 华蓥市| 紫云| 池州市| 弥勒县|