博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在网页中使用activex时,避免弹出安全对话框

Posted on 2006-02-17 17:52  gistoy  阅读(1188)  评论(0)    收藏  举报

代码方法(未经过测试)转自http://community.csdn.net/Expert/topic/4291/4291612.xml?temp=.3785059
Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0,1,2,3,4

 '"1004"=dword:00000003
'"1200"=dword:00000000
'"1201"=dword:00000000
'"1400"=dword:00000000
'"1402"=dword:00000000
'"1405"=dword:00000000
 
 设置成0 就是允许,3就是不允许。
 你可以设置安全性后的注册表,和没有设置安全性注册表比较一下,差异就在这里。
 我做这个软件的时候用到了。
 http://www.supercss.com/software/6568.htm

 我的具体代码,你在此基础上改一下:
 Public Sub EnableJScript(b_run As Boolean)
  '是否禁用脚本?
  Dim i_cyc As Integer
  Dim i_cya As Integer
  Dim v_value As Variant
  Dim s_value As String
  On Error Resume Next
'"1004"=dword:00000003
'"1200"=dword:00000003
'"1201"=dword:00000003
'"1405"=dword:00000003
'
'"1004"=dword:00000003
'"1200"=dword:00000000
'"1201"=dword:00000000
'"1400"=dword:00000000
'"1402"=dword:00000000
'"1405"=dword:00000000

  v_value = Array("1001", "1004", "1200", "1201", "1405")
  If b_run = False Then
    '备份
    Set cn_value = Nothing
   
    For i_cyc = 0 To 2
      If GetKeyValue(HK_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\" & i_cyc, "1400", s_value) Then
        cn_value.Add s_value, i_cyc & "_1400"
      Else
        cn_value.Add "0", i_cyc & "_1400"
      End If
      Call SetKeyValue(HK_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\" & i_cyc, 1400, REG_DWORD, 3)
    Next
     
    For i_cya = 0 To 2
        For i_cyc = 0 To 4
           If GetKeyValue(HK_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\" & i_cya, CStr(v_value(i_cyc)), s_value) Then
             cn_value.Add s_value, i_cya & "_" & v_value(i_cyc)
           Else
             cn_value.Add "0", i_cya & "_" & v_value(i_cyc)
          End If
         
          Call SetKeyValue(HK_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\" & i_cya, "1400", REG_DWORD, 3)
        Next
    Next
  Else
    For i_cyc = 0 To 2
      s_value = cn_value(i_cyc & "_1400")
     
      Call SetKeyValue(HK_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\" & i_cyc, "1400", REG_DWORD, Val(s_value))
    Next
     
    For i_cya = 0 To 2
        For i_cyc = 0 To 4
          s_value = cn_value(i_cya & "_" & v_value(i_cyc))
          Call SetKeyValue(HK_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\" & i_cya, CStr(v_value(i_cyc)), REG_DWORD, Val(s_value))
        Next
    Next
  End If
 
 
End Sub


Public Sub SetKeyValue(ByVal hKey As REGToolRootTypes, s_KeyName As String, s_ValueName As String, ValueType As Integer, s_ValueData As Variant)
    'ByVal KeyRoot As REGToolRootTypes, KeyName As String, ValueName As String, ByRef ValueData As String
    Dim ret As Long
    On Error GoTo Err1
    RegCreateKey hKey, s_KeyName, ret
    If ValueType = REG_DWORD Then
      RegSetValueEx ret, s_ValueName, 0, ValueType, CLng(s_ValueData), 4
    Else
      RegSetValueEx ret, s_ValueName, 0, ValueType, ByVal s_ValueData, Len(s_ValueData)
    End If
    RegCloseKey ret
   
Err1:
   
End Sub